在离线环境中将 CentOS 7.5 原地升级并迁移至 RHEL 7.9

《OpenShift / RHEL / DevSecOps 汇总目录》

说明

  1. 本文将说明如何在离线环境中将 CentOS 7.5 升级并迁移至 RHEL 7.9。为了简化准备过程,本文前面将在在线环境中安装用到的各种所需验证软件,而在后面升级迁移的时候再切换到由 ISO 构成的离线 Yum Repo。
  2. 以下所安装的验证软件基本都选择了和 CentOS 7.5 一个时期的较早版本,且都是单机安装配置。
  3. 另外出于方便,以下所有操作都使用的是 root 用户。
    在这里插入图片描述

准备 CentOS 7.5 VM 及其他被验证软件环境

安装 CentOS VM 并配置 CentOS 7.5 Yum Repo

本文使用的是 VirtualBox 6.1 的虚拟化软件。

  1. 下载 CentOS-7-x86_64-DVD-1804.iso(CentOS 7.5)、CentOS-7-x86_64-DVD-2009.iso(CentOS 7.9)、rhel-server-7.9-x86_64-dvd.iso 文件。
  2. 创建一个名为 CentOS7 的 VM,然后用 CentOS-7-x86_64-DVD-1804.iso 在其中最小化安装 CentOS 7.5 即可,过程略。
  3. 将 CentOS-7-x86_64-DVD-1804.iso 挂载到 CentOS 7.5 文件系统。
$ mkdir /mnt/centos75
$ mount /dev/sr0 /mnt/centos75
  1. 配置本地 Yum Repo。
$ cat > /etc/yum.repos.d/centos75-local.repo << EOF 
[centos75-local-repo]
name = centos75 local repo
baseurl=file:///mnt/centos75
enabled=1
gpgcheck=0
EOF

准备 docker 18.06.3.ce 环境

安装 docker

  1. 安装 docker 所需 Yum Repo。
$ curl -LO https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装 docker。
$ yum list docker-ce --showduplicates
$ yum install docker-ce-18.06.3.ce-3.el7
  1. 配置开机启动。
$ systemctl enable --now docker
$ systemctl status docker 

验证 docker

  1. 下载 tomcat:7.0.63 镜像。
$ docker pull tomcat:7.0.63
$ docker images
  1. 运行 tomcat 镜像
$ docker run -d -p 8080:8080 --name tomcat-test tomcat:7.0.63
$ docker ps -a
  1. 访问 tomcat
$ curl http://localhost:8080
  1. 删除镜像
$ docker rm tomcat-test

准备 mysql 5.7 环境

安装 mysql 环境

  1. 安装 mysql 安装所需 Yum Repo。
$ curl -LO http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
$ rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
$ yum localinstall mysql57-community-release-el7-8.noarch.rpm
  1. 确认已经有以下 3 个 mysql 的 Yum Repo。
$ yum repolist enabled | grep mysql
mysql-connectors-community/x86_64       MySQL Connectors Community           242
mysql-tools-community/x86_64            MySQL Tools Community                104
mysql57-community/x86_64                MySQL 5.7 Community Server           696
  1. 安装 mysql。
$ yum install -y mysql-community-server
  1. 配置开机启动。
$ systemctl enable --now mysqld
$ systemctl status mysqld

验证 mysql

  1. 使用临时密码登录 mysql。
$ grep 'temporary password' /var/log/mysqld.log
$ mysql -u root -p
  1. 修改密码。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ssw0rd';
  1. 创建用户。
mysql> CREATE USER 'user1'@'%' IDENTIFIED BY 'P@ssw0rd';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user1'@'localhost'  WITH GRANT OPTION;
  1. 操作 database 和 table。
mysql> create database crm;
mysql> use crm;
mysql> create table customer(id int,name varchar(20));
mysql> insert into customer values (1,'Jack');
mysql> insert into customer values (2,'Tom');
mysql> insert into customer values (3,'Bob');
mysql> insert into customer values (4,'James');
mysql> insert into customer values (5,'John');
mysql> select * from crm.customer;

准备 redis 5.0.13 环境

安装 redis

  1. 安装 epel 所需 Yum Repo。
$ curl -LO https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ yum install epel-release-latest-7.noarch.rpm
  1. 安装 redis 所需 Yum Repo。
$ curl -LO http://rpms.remirepo.net/enterprise/remi-release-7.rpm
$ yum install remi-release-7.rpm
  1. 安装 redis 5.0.13。
$ yum --enablerepo=remi list redis --showduplicates
$ yum --enablerepo=remi install redis-5.0.13-1.el7.remi
  1. 配置开机启动。
$ systemctl enable --now redis
$ systemctl status redis

验证 redis

  1. 进入 redis-cli 环境。
$ redis-cli
  1. 操作redis。
127.0.0.1:6379> SET 1 Jack
127.0.0.1:6379> SET 2 Tom
127.0.0.1:6379> SET 3 Bob
127.0.0.1:6379> SET 4 James
127.0.0.1:6379> SET 5 John
127.0.0.1:6379> GET 4

准备 rabbitmq 3.3.5 环境

安装 rabbitmq

  1. 下载 erlang 和 rabbitmq 的 rpm 安装包。
$ curl -LO https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.11/erlang-23.3.4.11-1.el7.x86_64.rpm
$ curl -LO https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.13/rabbitmq-server-3.9.13-1.el7.noarch.rpm
  1. 安装 erlang 和 rabbitmq。
$ yum localinstall erlang-23.3.4.11-1.el7.x86_64.rpm
$ yum localinstall rabbitmq-server-3.9.13-1.el7.noarch.rpm
  1. 配置开机启动。
$ systemctl enable --now rabbitmq-server
$ systemctl status rabbitmq-server

启动 webconsole

  1. 启动 webconsole
$ rabbitmq-plugins enable rabbitmq_management
  1. 创建用户。
$ rabbitmqctl add_user admin password
$ rabbitmqctl set_user_tags admin administrator

验证 rabbitmq

  1. 关闭防火墙。
$ systemctl stop firewalld
  1. 用浏览器打开 webconsole 地址,例如 http://192.168.x.x:15672
    在这里插入图片描述

准备 mongodb 4.4.2 环境

安装 mongodb

  1. 准备安装 mongodb 用到的 Yum Repo。
$ cat > /etc/yum.repos.d/mongodb.repo << EOF 
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/
gpgcheck=0
enabled=1
gpgkey=https://pgp.mongodb.com/server-4.4.asc
EOF
  1. 安装 mongodb。
$ yum install mongodb-org-4.4.2 mongodb-org-server-4.4.2 mongodb-org-shell-4.4.2 mongodb-org-mongos-4.4.2 mongodb-org-tools-4.4.2
  1. 配置开机启动。
$ systemctl enable --now mongod
$ systemctl status mongod

验证 mongodb

  1. 进入 mongo。
$ mongo
  1. 操作 dbs 和 collections。
> show dbs
> use crm
> db.crm.insert({"1":"Jack"})
> db.crm.insert({"2":"Tom"})
> db.crm.insert({"3":"Bob"})
> db.crm.insert({"4":"James"})
> db.crm.insert({"5":"John"})
> db.crm.find()

准备 Oracle DB 12c 环境

见《在离线环境中将运行 Oracle DB 12c 的 CentOS 7.5 原地升级并迁移至 RHEL 7.9》一文。

准备 CentOS 7.9 和 RHEL 7.9 的离线 Yum Repo

配置 ISO 挂载文件

  1. 设置 CentOS 7.5 VM 的存储。选中 “CentOS-7-x86_64-DVD-1804.iso” 一行,然后点击 “第一IDE控制器主通道” 右侧图标,点击 “选择虚拟盘…” 菜单,然后在弹出窗口选中 CentOS-7-x86_64-DVD-2009.iso 文件,这样第一个 IDE 就会挂载 CentOS-7-x86_64-DVD-2009.iso 文件了。
    在这里插入图片描述
  2. 点击下图的 “添加虚拟光驱” 右侧图标,然后在弹出的 “虚拟光盘选择” 窗口中点击 “注册” 图标,再在文件夹中选中 rhel-server-7.9-x86_64-dvd.iso 文件。最后在 “虚拟光盘选择” 窗口中点击 “选择” 按钮,这样第二个 IDE 就会挂载 rhel-server-7.9-x86_64-dvd.iso 文件了。
    在这里插入图片描述
  3. 完成后 VM 就可以同时挂载 CentOS-7-x86_64-DVD-2009.iso 和 rhel-server-7.9-x86_64-dvd.iso 两个文件了。
    在这里插入图片描述

配置 CentOS 7.9 和 RHEL 7.9 Yum Repo

  1. 将 CentOS-7-x86_64-DVD-2009.iso 和 rhel-server-7.9-x86_64-dvd.iso 挂载到运行 CentOS 7.5 的 VM 上。
    在这里插入图片描述
  2. 将 ISO 挂载到 CentOS 7.5 文件系统。
$ mkdir /mnt/centos79 /mnt/rhel79
$ mount /dev/sr0 /mnt/centos79
$ mount /dev/sr1 /mnt/rhel79
  1. 配置本地 Yum Repo。
$ cat > /etc/yum.repos.d/centos79-local.repo << EOF 
[centos79-local-repo]
name = centos79 local repo
baseurl=file:///mnt/centos79
enabled=1
gpgcheck=0
EOF$ cat > /etc/yum.repos.d/rhel79-local.repo << EOF 
[rhel79-local-repo]
name = rhel79 local repo
baseurl=file:///mnt/rhel79
enabled=1
gpgcheck=0
EOF
  1. 确认 CentOS 7.9 和 RHEL 7.9 的离线 Yum Repo 已经可用。
$ yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                 repo name                                      status
centos79-local-repo                     centos79 local repo                            4,070
rhel79-local-repo                       rhel79 local repo                              5,230
repolist: 9,300

将 CentOS 7.5 原地升级至 CentOS 7.9

  1. 查看当前发行版和 kernel 版本。
$ cat /etc/redhat-release
$ uname -r
  1. 升级 CentOS。
$ yum update
  1. 完成后再次查看当前发行版和 kernel 版本。
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
$ uname -r
3.10.0-862.el7.x86_64
  1. 为了生效 kernel,需要重启 Linux。
  2. 重启后再次查看 kernel 版本,确认已更新。
$ uname -r
3.10.0-1160.el7.x86_64

将 CentOS 7.9 原地迁移至 RHEL 7.9

安装 convert2rhel

方法1

  1. 下载安装 convert2rhel 所需 Yum Repo。
$ curl -o /etc/yum.repos.d/convert2rhel.repo https://ftp.redhat.com/redhat/convert2rhel/7/convert2rhel.repo
  1. 修改 /etc/yum.repos.d/convert2rhel.repo 文件,将 gpgcheck 设为 0。
  2. 安装 convert2rhel。
$ yum -y install convert2rhel

方法2

使用 rpm 安装 convert2rhel。

$ curl -LO https://github.com/oamg/convert2rhel/releases/download/v1.7.1/convert2rhel-1.7.1-1.el7.noarch.rpm
$ yum localinstall convert2rhel-1.7.1-1.el7.noarch.rpm

将 CentOS 7.9 转换到 RHEL 7.9

  1. 确认当前可用 Yum Repo。
$ yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                 repo name                                      status
centos79-local-repo                     centos79 local repo                            4,070
rhel79-local-repo                       rhel79 local repo                              5,230
repolist: 9,300
  1. 执行命令,在迁移前先进行分析。
$ convert2rhel analyze --disable-submgr --enablerepo=rhel79-local-repo
  1. 根据以上返回结果的提示,设置以下环境变量。
$ export CONVERT2RHEL_SKIP_KERNEL_CURRENCY_CHECK=1 			## 跳过是否升为最新内核的检查
$ export CONVERT2RHEL_OUTDATED_PACKAGE_CHECK_SKIP=1			## 跳过对过期包的检查
$ export CONVERT2RHEL_ALLOW_UNAVAILABLE_KMODS=1				## 检查所有加载的内核模块在 RHEL 资源库中是否可用
$ export CONVERT2RHEL_TAINTED_KERNEL_MODULE_CHECK_SKIP=1
  1. 执行迁移。
$ convert2rhel --disable-submgr --enablerepo=rhel79-local-repo
  1. 完成前会有以下提示,说明部分非 RedHat 的包无法替换。
Listing packages not signed by Red Hat
The following packages were left unchanged.Package                                                Vendor/Packager                                                       Repository
-------                                                ---------------                                                       ----------
0:mysql-community-libs-5.7.44-1.el7.x86_64             Oracle and/or its affiliates                                          N/A
0:mysql-community-common-5.7.44-1.el7.x86_64           Oracle and/or its affiliates                                          N/A
0:epel-release-7-14.noarch                             Fedora Project                                                        N/A
0:yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch      CentOS                                                                centos79-local-re                         po
0:mongodb-org-4.4.2-1.el7.x86_64                       (none)                                                                N/A
0:erlang-23.3.4.11-1.el7.x86_64                        VMware, Inc.                                                          N/A
0:remi-release-7.9-6.el7.remi.noarch                   Remi's RPM repository <https://rpms.remirepo.net/> #StandWithUkraine  N/A
0:openbox-libs-3.5.2-6.el7.x86_64                      Fedora Project                                                        N/A
0:python2-pyxdg-0.25-8.el7.noarch                      Fedora Project                                                        N/A
0:mongodb-org-server-4.4.2-1.el7.x86_64                (none)                                                                N/A
0:compat-libstdc++-33-3.2.3-72.el7.x86_64              CentOS                                                                N/A
0:rabbitmq-server-3.9.13-1.el7.noarch                  (none)                                                                N/A
2:container-selinux-2.119.2-1.911c772.el7_8.noarch     CentOS                                                                N/A
0:mysql-community-server-5.7.44-1.el7.x86_64           Oracle and/or its affiliates                                          N/A
0:mongodb-org-mongos-4.4.2-1.el7.x86_64                (none)                                                                N/A
0:redis-5.0.13-1.el7.remi.x86_64                       Remi's RPM repository <https://rpms.remirepo.net/>                    N/A
0:mysql-community-client-5.7.44-1.el7.x86_64           Oracle and/or its affiliates                                          N/A
0:docker-ce-18.06.3.ce-3.el7.x86_64                    Docker                                                                N/A
0:convert2rhel-1.7.1-1.el7.noarch                      (none)                                                                N/A
0:openbox-3.5.2-6.el7.x86_64                           Fedora Project                                                        N/A
0:mysql-community-libs-compat-5.7.44-1.el7.x86_64      Oracle and/or its affiliates                                          N/A
0:mongodb-database-tools-100.9.4-1.x86_64              MongoDB                                                               N/A
0:mongodb-org-database-tools-extra-4.4.2-1.el7.x86_64  (none)                                                                N/A
0:mysql57-community-release-el7-8.noarch               MySQL                                                                 N/A
0:mongodb-org-shell-4.4.2-1.el7.x86_64                 (none)                                                                N/A
0:imlib2-1.4.9-8.el7.x86_64                            Fedora Project                                                        N/A
0:mongodb-org-tools-4.4.2-1.el7.x86_64                 (none)                                                                N/A
  1. 成功迁移后会有 “Conversion successful!” 提示。
  2. 迁移过程的日志会写到 /var/log/convert2rhel/convert2rhel.log 文件中。
  3. 重启 Linux 后确认当前发行版和 kernel 版本已迁移到 RHEL 7.9 了。
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
$ uname -r
3.10.0-1160.el7.x86_64
  1. 使用前面各软件的验证步骤确认所有软件均可正常运行和使用。

参考

https://www.redhat.com/en/interactive-labs/migrate-red-hat-enterprise-linux-centos-linux
https://www.cnblogs.com/tenghu/p/15887218.html
https://github.com/oamg/convert2rhel/wiki/Environment-variables

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

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

相关文章

实现优先队列——C++

目录 1.优先队列的类模板 2.仿函数的讲解 3.成员变量 4.构造函数 5。判空&#xff0c;返回size&#xff0c;返回队头 6.插入 7.删除 1.优先队列的类模板 我们先通过模板来进行初步了解 由上图可知&#xff0c;我们的模板里有三个参数&#xff0c;第一个参数自然就是你要存储的数…

使用Android Studio 搭建AOSP FrameWork 源码阅读开发环境

文章目录 概述安装Android Studio编译源码使用Android Studio打开源码制作ipr文件直接编译成功后自动打开Android Studio 修改SystemUI验证开发环境 概述 我们都知道Android的系统源码量非常之大&#xff0c;大致有frameworka层源码&#xff0c;硬件层(HAL)源码&#xff0c;内…

【华为OD机试】数组连续和(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。 输入描述 第一行两个整数N x(0 < N <= 100000, 0 <= x <…

Java高阶私房菜:JVM分代收集算法介绍和各垃圾收集器原理分解

目录 什么是分代收集算法 GC的分类和专业术语 什么是垃圾收集器 垃圾收集器的分类及组合 ​编辑 应关注的核心指标 Serial和ParNew收集器原理 Serial收集器 ParNew收集器 Parallel和CMS收集器原理 Parallel 收集器 CMS收集器 新一代垃圾收集器G1和ZGC G1垃圾收集器…

iframe隐藏scrollbar并且还能够继续滚动

查了好久的文档&#xff0c;太累了&#xff0c;目前暂时使用了直接把scrollbar隐藏的策略。太难了。 直接隐藏的策略&#xff1a; frame 有个属性 scrolling&#xff0c;直接设置 scrolling‘no’ 即可隐藏scrollbar。 <iframe src"xxx" scrolling"no"…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月3日,星期五

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年5月3日 星期五 农历三月廿五 1、 气象台&#xff1a;我国南方地区3至5日将出现新一轮较强降水&#xff0c;局地有大暴雨。 2、 广东11地市打破4月雨量历史记录&#xff1a;梅州平均雨量为常年3.5倍。 3、 梅大高速路面塌…

Redis学习笔记(基础)

Redis学习笔记&#xff08;基础&#xff09; 一、Nosql概述1.1、为什么使用Nosql1.2、什么是Nosql1.3、阿里巴巴演进分析1.4、NoSQL的四大分类 二、 Redis入门2.1、概述2.2、Windows使用Redis2.3、linux安装2.4、redis-benchmark性能测试2.5、Redis基础知识 三、五大数据类型3.…

NIO(非阻塞I/O)和IO(阻塞I/O)详解

文章目录 一、NIO&#xff08;Non-blocking I/O&#xff0c;非阻塞I/O&#xff09;1、Channel&#xff08;通道&#xff09;与Buffer&#xff08;缓冲区&#xff09;1.1、使用ByteBuffer读取文件1.2、ByteBuffer 方法1.2、ByteBuffer 结构1.3、字符串与 ByteBuffer 互转1.4 Sca…

自然语言处理 (NLP) 中的迁移学习

--懂王 在大数据高速发展的时代&#xff0c;AI的发展日新月异&#xff0c;充满挑战的迎接未来。 自然语言处理 (NLP) 中的迁移学习: 迁移学习在 NLP 中越来越受欢迎&#xff0c;特别是在数据稀缺的情况下。如何有效地利用预训练的语言模型&#xff0c;并将其迁移到新的任务和领…

前端框架编译器之模板编译

未经作者允许&#xff0c;禁止转载 编译原理概述 编译原理&#xff1a;是计算机科学的一个分支&#xff0c;研究如何将 高级程序语言 转换为 计算机可执行的目标代码 的技术和理论。 高级程序语言&#xff1a;Python、Java、JavaScript、TypeScript、C、C、Go 等。计算机可执…

微软开源 MS-DOS「GitHub 热点速览」

上周又是被「大模型」霸榜的一周&#xff0c;各种 AI、LLM、ChatGPT、Sora、RAG 的开源项目在 GitHub 上“争相斗艳”。这不 Meta 刚开源 Llama 3 没几天&#xff0c;苹果紧跟着就开源了手机端大模型&#xff1a;CoreNet。 GitHub 地址&#xff1a;github.com/apple/corenet 开…

关于STC8 用定时器中断方式消抖误重复执行2次的原因

终于搞清楚了&#xff01; 原来&#xff1a;我项目需用到STC8的INT0/INT1&#xff08;2个脚都是类似插拔电&#xff0c;而非按键类型&#xff09;&#xff0c;本来完全可简简单单都用T0查询方式消抖(无需开ET0!其实软件消抖多几十ms都很可靠的了)! 但我想试试T0中断方式消抖的&…

golang 基础知识细节回顾

之前学习golang的速度过于快&#xff0c;部分内容有点囫囵吞枣的感觉&#xff0c;写gorm过程中有很多违反我常识的地方&#xff0c;我通过复习去修正了我之前认知错误和遗漏的地方。 itoa itoa自增的作用在编辑error code时候作用很大&#xff0c;之前编辑springboot的error c…

Stream流入门,Stream流创建

1、什么是Stream&#xff1f; *也叫Stream流&#xff0c;是JDK8开始新增的一套API&#xff0c;可以用于操作集合或者数组的数据。 *优势&#xff1a; Stream流大量结合了Lambda的语法风格来编程&#xff0c;提供了一种更加强大也更加简单的操作集合或者数组中的数据&#xf…

idea常用知识点随记

idea常用知识点随记 1. 打开idea隐藏的commit窗口2. idea中拉取Git分支代码3. idea提示代码报错&#xff0c;项目编译没有报错4. idea中实体类自动生成序列号5. idea隐藏当前分支未commit代码6. idea拉取新建分支的方法 1. 打开idea隐藏的commit窗口 idea左上角File→Settings…

前沿科技应用:AIGC技术的广泛渗透

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

『大模型笔记』MetaGPT: 多智能体框架:首家人工智能软件公司,走向自然语言编程

MetaGPT: 多智能体框架:首家人工智能软件公司,走向自然语言编程! 文章目录 一. MetaGPT: 多智能体框架二. MetaGPT-调研员-例子『大模型笔记』AI 智能体(Agent)在推理(Reasoning)、规划(Planning)与工具调度(Tool Calling)方面的研究:综合调查!一. MetaGPT: 多智能体框架 …

10、Python:字典类型(Dictionary)

字典的定义 在Python中&#xff0c;字典是一种可变容器模型&#xff0c;且可存储任意类型对象。字典的每个元素都是一个键值对。键必须是唯一的&#xff0c;而值则不必。 # 示例&#xff1a;创建一个字典 my_dict {name: Alice, age: 25, city: New York}常见运算操作 字典…

Python 正则表达式1 函数基础

正则表达式主要函数 注&#xff1a;表达式指正则表达式&#xff0c;字符串指待处理文本。 函数名称概要re.match()匹配检查字符串是否符合表达式&#xff0c;返回Match对象re.search()搜索搜索字符串是否包含表达式&#xff0c;返回Match对象re.findall()查询查询字符串所有符…

基于alpha shapes的边缘点提取(matlab)

1、原理介绍 由Edelsbrunner H提出的alpha shapes算法是一种简单、有效的快速提取边界点算法。其克服了点云边界点形状影响的缺点&#xff0c;可快速准确提取边界点。如下图所示&#xff0c;对于任意形状的平面点云&#xff0c;若一个半径为a的圆&#xff0c;绕其进行滚动&…