Ubuntu搭建CT_ICP里程计的环境暨CT-ICP部署
CT-ICP部署以及运行复现过程
- 0.下载资源,并按照github原网址的过程进行。
- 1.查看所需要的各个部分的版本。
- 2.安装clang编译器
- 3.进行超级构建
- 3.1标准进行
- 3.2构建过程中遇到的问题
- 4.构建并安装CT-ICP库
- 4.1标准进行
- 4.2遇到的问题及解决办法
- 5.构建 CT-ICP 的 ROS 包装
- 5.1标准进行
- 运行篇
- 1、使用脚本(在ct-icp数据集上)
- 2.使用可控系统(ROS)
0.下载资源,并按照github原网址的过程进行。
源码网址:https://github.com/jedeschaud/ct_icp
所有的步骤按照readme.md中的步骤进行,在此基础上添加里自己在此过程遇到的问题及解决办法。
1.查看所需要的各个部分的版本。
版本要求:
GCC >= 7.5, clang >= 8.01,cmake >= 3.14
查看gcc版本,gcc -v查看
(base) xiaoduan@fighter:~/source1/CT-ICP/pyLiDAR-SLAM$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
cmake --vesion查看cmake版本
(base) xiaoduan@fighter:~/source1/CT-ICP/pyLiDAR-SLAM$ cmake --version
cmake version 3.16.1CMake suite maintained and supported by Kitware (kitware.com/cmake).
2.安装clang编译器
安装clang参考下面网址安装:https://blog.csdn.net/xujianjun229/article/details/128902018#commentBox
的前面部分进行的。
依次输入一下三条命令:
sudo apt-get install llvm
sudo apt-get install clang
clang -v
产看版本的结果为:
clang version 10.0.0-4ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found CUDA installation: /usr/lib/cuda, version 10.1
至此,所有的基本要求已经符合。
3.进行超级构建
3.1标准进行
依次执行以下命令来安装所有依赖:
mkdir .cmake-build-superbuild && cd .cmake-build-superbuild #< Creates the cmake folder
cmake ../superbuild #< (1) Configure step
cmake --build . --config Release #< Build step (Downloads and install the dependencies), add -DWITH_VIZ3D=ON to install with the GUI
cmake . -DWITH_VIZ3D=ON #构建可视化
所有的命令执行完毕之后,如果一切正常,则应创建一个目录install,其中还会出现一个superbuild_import.cmake文件。
(此步骤进行之前,建议下载viz3d并执行pip install . 进行安装,这样可以避免后面会出现的一些问题)
3.2构建过程中遇到的问题
- 在第三句命令运行时出现问题了应该和连接外网有关,尝试了一下午决定忽略。
主要一直卡在:
git clone https://ceres-solver.googlesource.com/ceres-solveratal: unable to access ‘https://ceres-solver.googlesource.com/ceres-solver/’: Failed to connect to ceres-solver.googlesource.com port 443: 连接超
- 第二天早上来到之后还是决定试一试,因为在这儿忽略之后可能会出现其他一系列的问题。
调整网一直没能成功,于是就开始找文件中的clone语句,最终找到路径如下所示
在文件夹 .cmake-build-superbuild/MappingResearchKEU_superbuild/src/MappingResearchKEU_superbuild下gedit 打开CMakeLists.txt文件,进行以下改动
//更改前:
# INSTALL Ceres
if (WITH_CERES)message(INFO "${LOG_PREFIX}Generating Ceres dependency")ExternalProject_Add(CeresPREFIX CeresGIT_REPOSITORY https://ceres-solver.googlesource.com/ceres-solver //!!!!需要改动的地方 GIT_TAG 2.0.0//更改后:
# INSTALL Ceres
if (WITH_CERES)message(INFO "${LOG_PREFIX}Generating Ceres dependency")ExternalProject_Add(CeresPREFIX CeresGIT_REPOSITORY https://github.com/ceres-solver/ceres-solverGIT_TAG 2.0.0
然后就成功了,还好没放弃。
4.构建并安装CT-ICP库
4.1标准进行
执行以下命令:
# Inside the main directory
mkdir cmake-build-release && cd cmake-build-release #< Create the build directory
cmake .. -DCMAKE_BUILD_TYPE=Release #< (2) Configure with the desired options (specify arguments with -D<arg_name>=<arg_value>), add -DWITH_VIZ3D=ON to install with the GUI
cmake --build . --target install --config Release --parallel 12 #< Build and Install the project
cmake . -DWITH_VIZ3D=ON #构建可视化
注意: 第一行命令应该在此项目的主文件下进行。
如果一切正常,则超级构建目录中应该会出现一个子目录<SUPERBUILD_INSTALL_DIR>/CT_ICP/lib/cmake。 可以使用位于的配置文件在 cmake 中加载库项目,或使用 ROS 或指定的可执行文件。CT_ICP
4.2遇到的问题及解决办法
- 第二行命令运行时又出现错误:
CMake Error at cmake/external.cmake:13 (get_target_property):INTERFACE_LIBRARY targets may only have whitelisted properties. Theproperty "IMPORTED_RELEASE_LOCATION" is not allowed.
Call Stack (most recent call first):CMakeLists.txt:51 (include)INFO /home/xiaoduan/project/lidar/ct_icp-master/install/Ceres/lib/libceres.so.2.0.0
INFO /home/xiaoduan/project/lidar/ct_icp-master/install/glog/lib/libglog.so.0.5.0
CMake Error at cmake/external.cmake:13 (get_target_property):INTERFACE_LIBRARY targets may only have whitelisted properties. Theproperty "IMPORTED_RELEASE_LOCATION" is not allowed.
Call Stack (most recent call first):CMakeLists.txt:51 (include)INFO /home/xiaoduan/project/lidar/ct_icp-master/install/yaml-cpp/lib/libyaml-cpp.so.0.6.3
CMake Error at cmake/external.cmake:13 (get_target_property):INTERFACE_LIBRARY targets may only have whitelisted properties. Theproperty "IMPORTED_RELEASE_LOCATION" is not allowed.
Call Stack (most recent call first):CMakeLists.txt:51 (include)INFO /home/xiaoduan/project/lidar/ct_icp-master/install/tinyply/lib/libtinyply.so
INFO -- [CT-ICP] -- Appending to the INSTALL RPATH the RPATH to the external libraries: [:/home/xiaoduan/project/lidar/ct_icp-master/install/Ceres/lib:/home/xiaoduan/project/lidar/ct_icp-master/install/glog/lib:/home/xiaoduan/project/lidar/ct_icp-master/install/yaml-cpp/lib:/home/xiaoduan/project/lidar/ct_icp-master/install/tinyply/lib]
INFO [CT_ICP] -- "WITH_GTSAM=OFF gtsam dependent targets will not be built"
-- Configuring incomplete, errors occurred!
See also "/home/xiaoduan/project/lidar/ct_icp-master/cmake-build-release/CMakeFiles/CMakeOutput.log".
See also "/home/xiaoduan/project/lidar/ct_icp-master/cmake-build-release/CMakeFiles/CMakeError.log".
在网上搜了好多种方法都不好用,也没看明白,然后又在camke官网上搜索,甚至没有搜到IMPORTED_RELEASE_LOCATION。
试了好多种方式,发现每次搜索出来的都是IMPORTED_LOCATION_RELEASE,于是将cmake/external.cmake:13文件中的内容进行了修改。但是,事实证明,并没有效果。
接着按照以下网址对cmake进行了升级
https://blog.csdn.net/weixin_45860565/article/details/127869813
然后问题就解决了。最后一行命令直接成功,比较顺利。
现在cmake的版本为3.22.1
- 执行了cmake … --DWITH_VIZ3D=ON,然后就出现了以下问题。
CMake Error at install/superbuild_import.cmake:35 (find_package):Could not find a package configuration file provided by "viz3d" with any ofthe following names:viz3dConfig.cmakeviz3d-config.cmakeAdd the installation prefix of "viz3d" to CMAKE_PREFIX_PATH or set"viz3d_DIR" to a directory containing one of the above files. If "viz3d"provides a separate development package or SDK, be sure it has beeninstalled.
Call Stack (most recent call first):install/superbuild_import.cmake:101 (SLAM_DEFAULT_FIND_PACKAGE)cmake/superbuild_utils.cmake:27 (include)CMakeLists.txt:49 (SLAM_INCLUDE_SUPERBUILD)
调试没调试好,所幸删除cmake-build-release并重新执行了一遍D步骤。
然后进入到文件夹ct_icp-master/.cmake-build-superbuild/MappingResearchKEU_superbuild/src/MappingResearchKEU_superbuild-build/viz3d/src/viz3d中,执行命令./install.sh进行了安装
然后再从第三步执行一遍。
- 在执行第二句时,出现错误:
CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message):Unable to find either executable 'empy' or Python module 'em'... tryinstalling the package 'python3-empy'
Call Stack (most recent call first):/opt/ros/noetic/share/catkin/cmake/all.cmake:164 (include)/opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:20 (include)CMakeLists.txt:64 (find_package)
按照下面两个网站的内容进行解决
https://blog.csdn.net/gongdiwudu/article/details/124430036
https://blog.csdn.net/zkk9527/article/details/125558478
5.构建 CT-ICP 的 ROS 包装
5.1标准进行
- 安装共享库,执行以下命令:
cd ros/roscore
mkdir cmake-build-release && cd cmake-build-release #< Create the build directory
cmake .. -DCMAKE_BUILD_TYPE=Release #< (2) Configure with the desired options (specify arguments with -D<arg_name>=<arg_value>)
cmake --build . --target install --config Release --parallel 12 #< Build and Install the ROSCore library
- 新建一个工作空间,catkin_ws。并在里面建立一个src文件,执行以下命令:
mkdir -p catkin_ws/src
- 将项目与自己的空间连接到一起
cd <path-to-your-catkin-workspace>/src #< Move to the Catkin Workspace's src directory
ln -s <path-to-ct_icp-git-project>/ros/catkin_ws/ct_icp_odometry ct_icp_odometry #< Make a symbolic link to the `catkin_ws` folder
ln -s <path-to-ct_icp-git-project>/ros/catkin_ws/slam_roscore slam_roscore #< Make a symbolic link to the `catkin_ws` folder
cd .. #< Move back to the root of the catkin workspace
catkin_make -DSUPERBUILD_INSTALL_DIR=<path-to-superbuild-install-dir>
如果安装成功,并且在获取工作区的 devel 目录后,您应该能够启动 已安装的 ROS 节点。
包装定义以下节点:
ct_icp_dataset_node:发布从磁盘读取ct_icp不同数据集的点云的节点。
ct_icp_odometry_node:运行ct_icp测程的主测程节点。
注意: 这里的的工作空间和项目没有包含和被包含的关系。
运行测试:
roslaunch ct_icp_odometry launch_slam_dataset.launch dataset_path:=/home/xiaoduan/Desktop/dataset/KITTI/KITTI_raw dataset:=KITTI_raw sequence:=00
测试结果:
测试过程中的一个截图,最终留下的是一个轨迹图。
运行篇
1、使用脚本(在ct-icp数据集上)
此时感觉不用ros也能跑出来,于是就直接使用脚本跑,可以运行成功。
执行命令:
./run_odometry -c /home/xiaoduan/project/lidar/ct_icp-master/config/odometry/driving_config.yaml
脚本测试结果:
2.使用可控系统(ROS)
完成 ROS 安装后,使用 Rosbag推出测程计,例如:ros/catkin_ws/ct_icp_odometry/launch
roslaunch ct_icp_odometry lidar_odometry_subt.launch rosbag:=/home/xiaoduan/Desktop/dataset/a_lvl_1.bag
运行结果:
写在最后:
整个大体的步骤大体就有以下几个过程。
下载viz3d并执行pip install . 进行安装
git
cd
执行超级构建
对cmake进行手动升级
执行构建slam库
执行构建ros库
独立建立工作空间,与git的地址不同
进行节点创立
完成
然后进行运行
相关文章:
Ubuntu搭建CT_ICP里程计的环境暨CT-ICP部署
CT-ICP部署以及运行复现过程 0.下载资源,并按照github原网址的过程进行。1.查看所需要的各个部分的版本。2.安装clang编译器3.进行超级构建3.1标准进行3.2构建过程中遇到的问题 4.构建并安装CT-ICP库4.1标准进行4.2遇到的问题及解决办法 5.构建 CT-ICP 的 ROS 包装5…...
微信小程序全局事件订阅eventBus
微信小程序全局事件订阅 在Vue开发中,我们可能用过eventBus来解决全局范围内的事件订阅及触发逻辑,在微信小程序的开发中我们可能也也会遇到同样的需求,那么我们尝试下在小程序(原生小程序开发)中实现类似eventBus的事…...
华为云cce发布若依前后分离版:2.nginx镜像操作
下载nginx docker的官方镜像。 docker资源很难找,我在我的空间上传了一个,需要的话可以下载: https://download.csdn.net/download/axe6404/88225311 下载后,请用以下方法安装 2.1 导入docker 官方nginx镜像。 将镜像包nginx docker镜像包nginx-dockerimage.tar放…...
TCP协议报文结构
TCP是什么 TCP(传输控制协议)是一种面向连接的、可靠的、全双工的传输协议。它使用头部(Header)和数据(Data)来组织数据包,确保数据的可靠传输和按序传递。 TCP协议报文结构 下面详细阐述TCP…...
Day14-2-NodeJS后端开发流程
Day14-NodeJS后端工程化流程 一 apifox工具 apifox是目前最好的接口调试工具 1 环境搭建 安装登录创建项目接口里面创建对应文件夹在指定的文件夹里面创建接口2 GET请求 1 apifox发送GET请求 2 后端接收GET请求 router.get("/getUserinfo"...
计算机竞赛 基于CNN实现谣言检测 - python 深度学习 机器学习
文章目录 1 前言1.1 背景 2 数据集3 实现过程4 CNN网络实现5 模型训练部分6 模型评估7 预测结果8 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于CNN实现谣言检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐&am…...
框架(Git基础详解及Git在idea中集成步骤)
目录 基础: idea集成Git并添加项目到git仓库 1.idea集成git,集成.git.exe文件 2.初始化本地Git仓库项目 3. 将工作区代码添加到暂存区 4.将暂存区代码添加到本地仓库 5.Git本地库操作 Idea集成Gitee并提交代码到第三方库 1.setting里搜索gitee 2.添…...
0基础学习VR全景平台篇 第88篇:智慧眼-成员管理
一、功能说明 成员管理,是指管理智慧眼项目的成员,拥有相关权限的人可以进行添加成员、分配成员角色、设置成员分类、修改成员以及删除成员五项操作。但是仅限于管理自己的下级成员,上级成员无权管理。 二、前台操作页面 登录智慧眼后台操…...
DSO 系列文章(2)——DSO点帧管理策略
文章目录 1.点所构成的残差Residual的管理1.1.前端残差的状态1.2.后端点的残差的状态1.3.点的某个残差的删除 2.点Point的管理2.1.如何删除点——点Point的删除2.2.边缘化时删除哪些点? 3.帧FrameHessian的管理 DSO代码注释:https://github.com/Cc19245/…...
无需公网IP——搭建web站点
文章目录 概述使用 Raspberry Pi Imager 安装 Raspberry Pi OS设置 Apache Web 服务器测试 web 站点安装静态样例站点将web站点发布到公网安装 Cpolar内网穿透cpolar进行token认证生成cpolar随机域名网址生成cpolar二级子域名将参数保存到cpolar配置文件中测试修改后配置文件配…...
swift 项目集成友盟推送
1, 需要用桥接文件 , 不然引用不到依赖库 2, 可以用测试模式测试, 可以debug 3, 测试模式获取deviceToken, 添加测试设备 deviceToken获取方法 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { le…...
Unity之用Transform 数组加多个空物体-->简单地控制物体按照指定路线自动行驶
文章目录 **原理解释**:**带注释的代码**:实际运用 当你需要实现物体按照指定路线行驶时,你可以通过以下步骤来实现: 原理解释: 路径点:你需要定义一系列路径点,这些点将构成物体行驶的路线。每…...
交换机生成树STP
生成树协议(spanning-tree-protocol,stp):在具有物理环路的交换机网络上生成没有回路的逻辑网络的方法,生成树协议使用生成树算法,在一个具有冗余路径的容错网络中计算出一个无环路的路径,使一部分端口处于…...
3.微服务概述
1.大型网络架构变迁 SOA与微服务最大的差别就是服务拆分的细度,目前大多数微服务实际上是SOA架构,真正的微服务应该是一个接口对应一个服务器,开发速度快、成本高; 微服务SOA能拆分的就拆分是整体的,服务能放一起的都…...
cloud_mall-notes02
1、多条件分页查询page ApiOperation("多条件分页查询xxxx")GetMapping("page")PreAuthorize("hasAuthority(模块权限:权限:page)")public ResponseEntity<Page<实体类>> loadxxxxPage(Page<实体类> page,实体类 domain) {pag…...
前端轻松实现文件预览(pdf、excel、word、图片)
需求:实现一个在线预览pdf、excel、word、图片等文件的功能。 介绍:支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代码实现所有功能,建议以下的预览文件标签可以在外层包裹一层弹窗。 图片预览 iframe标签能够将另一个HTML页面嵌入到…...
docker服务器、以及容器设置自动启动
一、docker服务设置自动启动 查看已启动的服务 systemctl list-units --typeservice 查看是否设置开机启动 systemctl list-unit-files | grep enable设置开机启动 systemctl enable docker.service关闭开机启动 systemctl disable docker.service 二、docker容器设置自…...
k8s集群证书过期后,如何更新k8s证书
对于版本 1.21.5,这是我的解决方案: 步骤1: ssh 到主节点,然后在步骤 2 中检查证书。 步骤2: 运行这个命令:kubeadm certs check-expiration rootkube-master-1:~# kubeadm certs check-expiration [c…...
5.6.webrtc三大线程
那今天呢?我们来介绍一下web rtc的三大线程,那为什么要介绍这三大线程呢?最关键的原因在于web rtc的所有其他线程都是由这三大线程所创建的。那当我们将这三个线程理解清楚之后呢?我们就知道其他线程与它们之间是怎样关系…...
@Slf4j报错:Not generating field log: A field with same name already exists
错误出处: 错误原因: 同时使用了Slf4j注解以及LittlecLogger private static final LittlecLogger log LittlecLoggerFactory.getLogger(TimeTrackController.class); 修复方法: 将log改为LOG,便于区分,代码即用到了…...
乖宝宠物上市,能否打破外资承包中国宠物口粮的现实
近日,乖宝宠物上市了,这是中国宠物行业成功挂牌的第三家公司。同时,昨日,宠物行业最大的盛事“亚洲宠物展”时隔3年,于昨日在上海成功回归。 这两件事情的叠加可谓是双喜临门,行业能够走到今天实属不易&…...
Ubuntu安装Apache+Php
环境:ubuntu 22.04 虚拟机 首先更新一下 sudo apt-get update sudo apt-get upgrade安装Apache2: sudo apt-get install apache2 输入y,继续。等着他恐龙抗浪抗浪的下载安装就好了 打开浏览器访问http://localhost/ 安装php: …...
open cv学习 (四)图像的几何变换
图像的几何变换 demo1 # dsize实现缩放 import cv2 img cv2.imread("./cat.jpg") dst1 cv2.resize(img, (100, 100)) dst2 cv2.resize(img, (400, 400)) # cv2.imshow("img", img) # cv2.imshow("dst1", dst1) # cv2.imshow("dst2&quo…...
matlab 检测点云中指定尺寸的矩形平面
目录 一、概述1、算法概述2、主要函数二、代码示例三、结果展示四、参数解析输入参数名称-值对应参数输出参数五、参考链接一、概述 1、算法概述 detectRectangularPlanePoints:检测点云中指定尺寸的矩形平面 <...
HCIP——STP配置案例
STP配置案例 一、简介二、实现说明1、华为实现说明2、其他厂商实现 三、STP原理1、协商原则2、角色和状态3、报文格式4、BPDU报文处理流程4.1 BPDU报文的分类4.2 BPDU报文的处理流程4.3 BPDU报文格式 四、使用注意事项五、配置举例1、组网需求2、配置思路3、操作步骤4、配置文件…...
JCTools Mpsc源码详解(二) MpscArrayQueue
MpscArrayQueue是一个固定大小的环形数组队列,继承自ConcurrentCircularArrayQueue MpscArrayQueue的特点: 环形队列底层数据结构为数组有界 看一下MpscArrayQueue的属性(填充类除外)--- //生产者索引 private volatile long producerIndex; //生产者边界 private volatile…...
前端面试的性能优化部分(13)每天10个小知识点
目录 系列文章目录前端面试的性能优化部分(1)每天10个小知识点前端面试的性能优化部分(2)每天10个小知识点前端面试的性能优化部分(3)每天10个小知识点前端面试的性能优化部分(4)每天…...
C++ STL无序关联式容器(详解)
STL无序关联式容器 继 map、multimap、set、multiset 关联式容器之后,从本节开始,再讲解一类“特殊”的关联式容器,它们常被称为“无序容器”、“哈希容器”或者“无序关联容器”。 注意,无序容器是 C 11 标准才正式引入到 STL 标…...
Python爬虫解析工具之xpath使用详解
文章目录 一、数据解析方式二、xpath介绍三、环境安装1. 插件安装2. 依赖库安装 四、xpath语法五、xpath语法在Python代码中的使用 一、数据解析方式 爬虫抓取到整个页面数据之后,我们需要从中提取出有价值的数据,无用的过滤掉。这个过程称为数据解析&a…...
Linux防火墙报错:Failed to start firewalld.service Unit is masked
Linux防火墙报错:Failed to start firewalld.service: Unit is masked. 1、故障现象: 启动防火墙失败,报错情况如下: systemctl start firewalld # 报错: Failed to start firewalld.service: Unit is masked.原因是…...
微网站怎么做百度关键词/百度搜索什么关键词能搜到网站
真没想到这个系列还能更新下去…之前本来就是想写个烟花写个黑白棋小程序图一乐的,结果搞个文化节活动找不着人来写js,只能自己上了,连熬三个大夜总算是把网上找的一千多行的开源代码理完、部分重构完了。 自认为无论是还原性还是交互都设计…...
做网站市场报价/大数据精准客户
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。华为p30照片删除后可以恢复。华为手机在删除图片后,会保存在手机的已删除相册里。华为消费者业务产品全面覆盖手机、移动宽带终端、终端云等,凭借自身的全球化…...
做一份网站动态图多少钱/百度快速收录方法
现在来看一个完整的hexapod模型,逆运动学也是相当简单...
设计师必须知道的网站/网络营销师工作内容
题目: 我是超链接 题意: ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 问每队至少解出一题且冠军队至少解出N道题的概率。 题解: 学会“至少”这个词的转化 dp[i][j][k]表示第i个队前j个题…...
java做教程网站/免费个人博客网站
第1关:Hyperledger Fabric 基本概念 任务描述 本关任务:根据本实训的相关知识,完成与 Hyperledger Fabric 基本概念相关的选择题。 相关知识 超级账本介绍 超级账本,即 Hyperledger,是区块链技术中第一个面向企业级应用场景的开源分布式账本平台。 2015年12月由 Linux …...
网站备案可以国际域名/杭州seo网站优化公司
转自:https://www.cnblogs.com/songhaipeng/p/3323541.html 在J2EE框架下开发web网站,这种问题经常遇到,只要我们网上搜一下,就可以看到很多版本的,我整理一下: 第一种可能性解决:看看我的项目&…...