obdumper和obloader迁移OceanBase业务库(一):实施手册

  • 导出前准备
  • 全库(模式)数据导出
  • 全库(模式)数据导入
  • 导入后检查

  • 环境信息:OceanBase v4.3.5单机部署,MySQL租户
  • OBDUMPER和OBLOADER的安装请参考:https://www.oceanbase.com/docs/enterprise-oceanbase-dumper-loader-cn-10000000001142213

导出前准备

检查软件版本:

[admin@oceanbase ~]$ /oceanbase/bin/observer -V
/oceanbase/bin/observer -V
observer (OceanBase 4.3.5.1)[admin@oceanbase bin]$ ./obdumper -V
Version: 4.3.4-RELEASE

查看数据库版本:

select @@version, @@version_comment from dual;select version();

检查集群名称:

select * from gv$ob_parameters where name like '%cluster%';

检查租户信息:

select tenant_id,tenant_name,tenant_type,primary_zone,
compatibility_mode,status,tenant_role,switchover_status,log_mode,compatible 
from oceanbase.dba_ob_tenants;

Oracle/MySQL租户:统计业务租户(tenant_id=1002)的数据量:

select svr_ip,svr_port,round(sum(data_size)/1024/1024/1024, 2) as data_size_gb,round(sum(required_size)/1024/1024/1024, 2) as required_size_gb
from CDB_OB_TABLET_REPLICAS
where TENANT_ID = 1002
group by svr_ip,svr_port;

MySQL租户:统计业务租户下所有数据库的大小:

show databases;select database_name,
round(sum(occupy_size)/1024/1024,2) occupy_size_mb,
round(sum(required_size)/1024/1024,2) required_size_mb
from oceanbase.DBA_OB_TABLE_SPACE_USAGE
group by database_name;

Oracle租户:统计租户下所有模式的数据量:

select owner,sum(bytes)/1024/1024 size_mb from dba_segments
group by owner order by size_mb;

MySQL租户:统计当前租户下所有的表和索引大小:

select table_id,database_name,table_name,
round(occupy_size/1024/1024,2) occupy_size_mb,
round(required_size/1024/1024,2) required_size_mb
from oceanbase.DBA_OB_TABLE_SPACE_USAGE;

Oracle租户:统计单个租户下所有表和索引大小(NULL表示空表):

--统计所有表、所有索引
select owner,segment_name,segment_type,sum(bytes)/1024/1024 size_mb from dba_segments
group by owner,segment_name,segment_type
having owner='用户名'
order by size_mb;--只统计非空表
select owner,segment_name,segment_type,sum(bytes)/1024/1024 size_mb from dba_segments
group by owner,segment_name,segment_type
having owner='用户名' and segment_type='TABLE'
and (sum(bytes) is not NULL and sum(bytes) > 0)
order by sum(bytes);

MySQL租户:统计业务数据库下的所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…):

-- 方法一
select owner,object_type,count(object_name) from dba_objects 
group by owner,object_type having owner in ('knowledgedb','other_app_users')
order by owner,object_type;-- 方法二
select table_schema,count(table_name) from information_schema.tables
group by table_schema order by table_schema;select table_schema,count(table_name) from information_schema.views
group by table_schema order by table_schema;select trigger_schema,count(trigger_name) from information_schema.triggers
group by trigger_schema order by trigger_schema;select routine_schema,routine_type,count(routine_name) from information_schema.routines
group by routine_schema,routine_type order by routine_schema,routine_type;

Oracle租户:统计单个模式下所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…):

select owner,object_type,count(object_name) from dba_objects 
group by owner,object_type having owner='用户名'
order by owner,object_type;

MySQL租户:检查业务数据库下的所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…):

-- 方法一
select owner,object_name,subobject_name,object_type from dba_objects 
where owner in ('用户1','用户2',...)
order by owner,object_type;-- 方法二
select table_schema,table_name from information_schema.tables;
select table_schema,table_name from information_schema.views;
select trigger_schema,trigger_name from information_schema.triggers;
select routine_schema,routine_type,routine_name from information_schema.routines;

MySQL租户:检查应用连接是否断开:

show processlist;

⚠️ 关于磁盘空间

  • 由于OceanBase存储数据时有做压缩,OBdumper导出表数据的文件实际大小可能是数据库内部查到的大小的好几倍!!!
  • 务必保证导出路径的磁盘空间大小足够。建议导出路径剩余磁盘空间是数据库内查到的表数据量的至少5倍大小。

全库(模式)数据导出

⭐️ 导出环境

  • 集群名:obvector
  • 业务租户:obvector
  • 业务租户管理员:root(MySQL租户)/sys(Oracle租户)
  • MySQL数据库/Oracle模式:knowledgedb
  • 业务用户:knowledgedb

⚠️ 注意事项

  • 旧版本使用obdumper和obloader进行表结构迁移时,需要指定--sys-user--sys-password选项,获取表结构元数据信息。如果未指定该选项,导出/导入功能和性能可能会受到较大的影响。
  • OceanBase数据库V4.0.0及之后版本,使用OBdumper和OBloader无需再指定--sys-user--sys-password选项。
  • 推荐使用租户管理员作为导出和导入用户,普通用户需要额外授权。
  • 为确保数据一致性,请在业务停机时进行数据导出。

⭐️ 要求导出一致性数据时,建议在导出数据前,手动触发一次合并,在合并成功后再重新导出数据。

--检查租户合并状态
SELECT * FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION;--手动触发一次租户合并
ALTER SYSTEM MAJOR FREEZE TENANT = obvector;--检查租户合并状态(COMPACTING表示合并中,变成IDLE表示合并完成)
SELECT * FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION;

OBdumper和OBloader支持将表数据导出为CSV格式(官方推荐)或SQL文本。以下将以导出CSV数据文件和导入CSV数据文件为例进行介绍使用obdumper和obloader进行数据迁移。


  1. 使用OBDUMPER和OBLOADER前请确认已配置JAVA环境变量(JAVA_HOMEJRE_HOME)。
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.h5.ky10.x86_64/jre
  1. 使用obdumper导出业务库knowledgedb中所有对象的DDL信息:
cd /home/obadmin/ob-loader-dumper-4.3.4-RELEASE/bin# 集群导出整库DDL
./obdumper -h OBProxy主机地址 -P 2883 -u 执行导出的用户 -p ****** -c 集群名称 -t 租户名称 -D 数据库名称 \
--ddl --all -f /obdata/backup/migrate_dbname/ddl_data# 单机导出整库DDL(不用指定集群名)
./obdumper -h 127.0.0.1 -P 2881 -u knowledgedb -p ****** -t obvector -D knowledgedb \
--ddl --all -f /obdata/backup/knowledgedb/ddl_data# 使用租户管理员导出指定数据库/模式下的所有对象定义(MySQL为root/Oracle为sys)
./obdumper -h 127.0.0.1 -P 2881 -u root -p ****** -t obvector -D knowledgedb \
--ddl --all -f /obdata/backup/knowledgedb/ddl_data

该过程会导出所有表的定义、以及定义在表上的索引定义。

其中:

  • --ddl:导出DDL文件。
  • --ddl --all:导出所有已支持的数据库对象定义。
  • --ddl --table '*':导出所有表的定义。
  • --view='*':导出所有视图的定义。
  • --function='*':导出所有函数的定义。
  • --procedure='*':导出所有存储过程的定义。
  • --trigger='*':导出所有触发器的定义。
  • --sequence='*':导出所有序列的定义。
  • --package='*':导出所有包的定义。
  • --thread:导出任务的并发数。建议导出并发数不超过4。并发数太大会影响访问sys租户下的内部视图,导出时会出现超时错误。
  • --all用于标识导出所有的数据库对象定义和表数据,是视图、存储过程、函数、触发器等数据库对象类型的集合,使用限制等事项以具体的数据库对象类型为准。
  • --all选项与任意的数据库对象选项之间都是互斥的,不可同时指定;如果同时指定--all选项与任意的数据库对象选项,则会优先执行--all选项命令。
  • --all选项与--csv|--sql|--cut任意一种数据格式选项搭配使用时,表示按照对应的格式导出所有表中的数据。
  • 如果需要导出所有的数据库对象定义和表数据,可以指定--all --ddl选项再搭配任意一种数据格式选项(例如--sql)。

导出的DDL文件命名格式为对象名-schema.sql。如果有多种数据库对象,会导出到不同的子路径下。

[admin@oceanbase knowledgedb]$ ll -h ddl_data/data/knowledgedb/
total 28K
drwxr-xr-x 2 admin admin 4.0K Aug 15 16:18 FUNCTION
drwxr-xr-x 2 admin admin  275 Aug 15 16:18 PROCEDURE
drwxr-xr-x 2 admin admin 4.0K Aug 15 16:18 SEQUENCE
drwxr-xr-x 2 admin admin  12K Aug 15 16:18 TABLE
drwxr-xr-x 2 admin admin 4.0K Aug 15 16:18 TRIGGER

导出过程中的错误日志如下:

[amdin@oceanbase ~]$ ls /obdata/backup/knowledgedb/ddl_data/logs
ob-loader-dumper.error  ob-loader-dumper.info  ob-loader-dumper.warn  sql-monitor.log
  1. 使用obdumper导出业务库knowledgedb的表数据:
# 集群导出整库表数据
./obdumper -h OBProxy主机地址 -P 2883 -u 执行导出的用户 -p ****** -c 集群名称 -t 租户名称 -D 数据库名称 \
--csv --table '*' -f /obdata/backup/migrate_dbname/csv_data# 单机导出整库表数据(不用指定集群名)
./obdumper -h 127.0.0.1 -P 2881 -u knowledgedb -p ****** -t obvector -D knowledgedb \
--csv --table '*' -f /obdata/backup/knowledgedb/csv_data# 使用租户管理员导出指定数据库/模式下的所有表数据(MySQL为root/Oracle为sys)
./obdumper -h 127.0.0.1 -P 2881 -u root -p ****** -t obvector -D knowledgedb \
--mem 12G --csv --table '*' -f /obdata/backup/knowledgedb/csv_data

其中:

  • --csv --table '*':以CSV格式导出所有表的数据。
  • --sql --table '*':以SQL格式导出所有表的数据。
  • --mem 12G:调大JVM内存以提高obdumper导出效率(默认为4G)。

如果单张表的数据量太大,会导出为多个文件,文件命名会加上数字后缀。

[admin@oceanbase knowledgedb]$ ll -h TABLE/mydb_external_report_embedding*
-rw-r----- 1 admin admin 1.1G Aug 17 12:21 TABLE/mydb_external_report_embedding.0.csv
-rw-r----- 1 admin admin 1.1G Aug 17 12:30 TABLE/mydb_external_report_embedding.10.csv
-rw-r----- 1 admin admin 1.1G Aug 17 12:31 TABLE/mydb_external_report_embedding.11.csv
-rw-r----- 1 admin admin 1.1G Aug 17 12:32 TABLE/mydb_external_report_embedding.12.csv
...

导出过程中的错误日志如下:

[amdin@oceanbase ~]$ ls /obdata/backup/knowledgedb/csv_data/logs
ob-loader-dumper.error  ob-loader-dumper.info  ob-loader-dumper.warn  sql-monitor.log

查看导出过程的并发线程数:

[amdin@oceanbase knowledgedb]$ cat csv_data/logs/ob-loader-dumper.info | grep -i thread
2025-08-17 10:23:33 [INFO] Start 32 record dump threads for 6 dump tasks finished
  1. 传输到目标服务器。
cd /obdata/backup/knowledgedb 
scp -r ddl_data/ obadmin@{NEW_OBHOST_IP}:/obdata/backup/knowledgedb/
scp -r csv_data/ obadmin@{NEW_OBHOST_IP}:/obdata/backup/knowledgedb/

全库(模式)数据导入

⭐️ 导入环境

  • 集群名:obvector
  • 业务租户:obvector1
  • 业务租户管理员:root(MySQL租户)/sys(Oracle租户)
  • MySQL数据库/Oracle模式:knowledgedb
  • 业务用户:knowledgedb

  1. 使用OBDUMPER和OBLOADER前请确认已配置JAVA环境变量(JAVA_HOMEJRE_HOME)。
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.h5.ky10.x86_64/jre
  1. 使用obloader导入业务库knowledgedb的表结构:
cd /home/obadmin/ob-loader-dumper-4.3.4-RELEASE/bin# 集群导入整库DDL
./obloader -h OBProxy主机地址 -P 2883 -u 执行导入的用户 -p ****** \
-c 集群名称 -t 租户名称 -D 数据库名称 --ddl --all -f /obdata/backup/migrate_dbname/ddl_data# 单机导入整库DDL(不用指定集群名)
./obloader -h 127.0.0.1 -P 2881 -u knowledgedb -p ****** \
-t obvector1 -D knowledgedb --ddl --all -f /obdata/backup/knowledgedb/ddl_data# 使用租户管理员导入指定数据库/模式下的所有对象定义(MySQL为root/Oracle为sys)
./obloader -h 127.0.0.1 -P 2881 -u root -p ****** \
-t obvector1 -D knowledgedb --ddl --all -f /obdata/backup/knowledgedb/ddl_data
  1. 使用obloader导入业务库knowledgedb的表数据:
# 集群导入整库表数据
./obloader -h OBProxy主机地址 -P 2883 -u 执行导入的用户 -p ****** \
-c 集群名称 -t 租户名称 -D 数据库名称 --csv --table '*' -f /home/admin/test_migrate_data/csv_data# 单机导入整库表数据(不用指定集群名)
./obloader -h 127.0.0.1 -P 2881 -u knowledgedb -p ****** \
-t obvector1 -D knowledgedb --csv --table '*' -f /obdata/backup/knowledgedb/csv_data# 使用租户管理员导入指定数据库/模式下的所有表数据(MySQL为root/Oracle为sys)
./obloader -h 127.0.0.1 -P 2881 -u root -p ****** \
--mem 24G --skip-header \
-t obvector1 -D knowledgedb --csv --table '*' -f /obdata/backup/knowledgedb/csv_data

其中:

  • --mem 24G:调大JVM内存以提高obdumper导出效率(默认为4G)。
  • --skip-header:跳过CSV文件第一行的表头。
  • --thread:导入任务的并发数。该选项直接对应写入线程数。与--rw选项搭配使用时,用于计算文件解析线程数,计算公式:--thread参数值 * --rw参数值。默认值:CPU乘以 2。OceanBase是串行执行DDL,所以导入数据库对象定义时无需指定该选项。
  • --rw:用于标识文件解析线程占总线程数的比例。默认值:0.2。 该选项与--thread选项搭配使用,可计算出文件解析线程数等于:--thread参数值 * --rw参数值。

导入后检查

检查数据量:

 select database_name,
round(sum(occupy_size)/1024/1024,2) occupy_size_mb,
round(sum(required_size)/1024/1024,2) required_size_mb
from oceanbase.DBA_OB_TABLE_SPACE_USAGE
group by database_name;

检查对象清单:

select owner,object_type,count(object_name) from dba_objects 
group by owner,object_type having owner='knowledge_base'
order by owner,object_type;select owner,object_name,subobject_name,object_type from dba_objects 
where owner='knowledge_base'
order by owner,object_type;

检查失效对象:

select owner,object_name,subobject_name,object_type,status from dba_objects 
where owner='knowledge_base' and status='INVALID'
order by owner,object_type;

重建失效的索引。

迁移完成后,可以再做一次手动合并:

--检查租户合并状态
SELECT * FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION;--手动触发一次租户合并
ALTER SYSTEM MAJOR FREEZE TENANT = obvector;--检查租户合并状态(COMPACTING表示合并中,变成IDLE表示合并完成)
SELECT * FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION;

References
【1】https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000003378663
【2】https://www.oceanbase.com/docs/common-oceanbase-dumper-loader-1000000002401643
【3】https://www.oceanbase.com/docs/enterprise-oceanbase-dumper-loader-cn-10000000001142213
【4】https://www.oceanbase.com/docs/enterprise-oceanbase-dumper-loader-cn-10000000001142216
【5】https://www.oceanbase.com/docs/enterprise-oms-doc-cn-1000000000091365
【6】https://ask.oceanbase.com/t/topic/35620174
【7】https://www.cnblogs.com/bsmn/p/16496455.html
【8】https://open.oceanbase.com/blog/16018455643
【9】https://open.oceanbase.com/blog/20224546128
【10】https://www.oceanbase.com/docs/common-oceanbase-dumper-loader-1000000002401653

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

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

相关文章

SQLSugar 快速入门:从基础到实战查询与使用指南

目录 ​编辑 一、SQLSugar 简介 二、SQLSugar 环境搭建 2.1 安装 SQLSugar 2.1.1 通过 Visual Studio NuGet 图形化界面安装 2.1.2 通过 NuGet 命令行安装 2.2 引用 SQLSugar 命名空间 三、SQLSugar 核心初始化配置 3.1 基础初始化(非 IOC 模式&#xff09…

Python与Rust语法对比详解:从入门到精通

Python与Rust语法对比详解:从入门到精通 前言 Python和Rust作为当今最受关注的编程语言,分别代表了动态类型和静态类型语言的典型特征。本文将从语法层面深入对比这两种语言,帮助开发者理解它们的设计理念和使用场景。1. 基础语法结构 1.1 He…

视频加水印_带gif 加动态水印 gif水印 视频浮动水印

如果你有一个视频,你想给它加一个水印,让水印浮动,而且加的还是 GIF 动态图片水印,那么你可以使用这个工具。首先把你的两个文件拖进来,然后点击第三个按钮。加好了,打开看一下,我们看到这个水印…

C# 字符和字符串

原文:C# 字符和字符串_w3cschool 请勿将文章标记为付费!!!!! C#字符和字符串 C#的 char 类型别名 System.Char 类型表示 Unicode 字符。 在单引号中指定char字面值: …

IntelliJ IDEA 反编译JAR包记录

本文记录了使用 IntelliJ IDEA 内置反编译工具对 JAR 包进行反编译的详细步骤,方便日后快速参考和使用。 🛠️ 工具准备 反编译工具使用的是 IntelliJ IDEA 内置的 Java 反编译器,无需额外安装其他工具。 工具路径: /Applications…

KingbaseES JDBC 驱动详解:连接、配置与最佳实践

目录KingbaseES JDBC 驱动详解:连接、配置与最佳实践引言一、JDBC 基础与 KingbaseES 实现1.1 JDBC 技术概述1.2 KingbaseES JDBC 驱动特点二、环境配置与驱动获取2.1 驱动包选择与依赖管理2.2 国密算法支持2.3 驱动版本信息获取三、数据库连接管理3.1 使用 DriverM…

破解 Aspose.Words 24.12,跳过 License 校验,实现 HTML 向 Word/PDF 的转换,附带 Demo。

说明 在Java生态中处理Office文档时,开发人员常面临格式兼容性和功能完整性的挑战。商业组件Aspose以其卓越的文档处理能力成为企业级解决方案之一,支持Word、Excel、PDF等多种格式的精准转换与操作。 请勿用于商业用途,若侵权请联系我。 参考…

php连接rabbitmq例子

首先确保安装好了Rabbitmq服务器。1.新建一个空白php项目&#xff0c;安装php客户端库&#xff1a;composer require php-amqplib/php-amqplib2.生产者然后添加生产者代码 (producer.php)<?php require_once __DIR__ . /vendor/autoload.php;use PhpAmqpLib\Connection\AMQ…

Docker Swarm vs Kubernetes vs Nomad:容器编排方案对比与选型建议

Docker Swarm vs Kubernetes vs Nomad&#xff1a;容器编排方案对比与选型建议 在微服务和云原生时代&#xff0c;容器编排成为支持大规模容器化应用的关键技术。本文将从问题背景、方案对比、优缺点分析、选型建议以及实际应用效果验证五个方面&#xff0c;对Docker Swarm、Ku…

似然函数对数似然函数负对数似然函数

目录1. 似然函数的定义2. 对数似然函数的定义3. 负对数似然函数的定义4. 负对数似然函数的优化5. 具体应用示例5.1 逻辑回归中的负对数似然函数5.2 优化逻辑回归的负对数似然函数1. 似然函数的定义 似然函数L(θ∣X)L(\theta | X)L(θ∣X)是在给定参数θ\thetaθ 下&#xff0…

鸿蒙地址选择库(ArkTs UI)

功能点&#xff1a;支持三级联动、点击确认返回省市区code及name&#xff08;安心&#xff09;、布局可以高度自定义 实现&#xff1a;TextPicker读取本地json&#xff08;也可用第三方的json 不过需要自行调整了&#xff09; 先上图吧、废话下面再说&#xff1a; 凑和看吧、…

YOLO 目标检测:数据集构建(LabelImg 实操)、评估指标(mAP/IOU)、 NMS 后处理

文章目录基本知识介绍1.视觉处理三大任务2.训练、验证、测试、推理3.数据集3.1 数据集格式3.2 数据集标注4.上游任务和下游任务YOLO指标1.真实框&#xff08;Ground Truth Box&#xff09;与边界框&#xff08;Bounding Box&#xff09;2.交并比&#xff08;IOU&#xff09;3.置…

进程状态 —— Linux内核(Kernel)

&#x1f381;个人主页&#xff1a;工藤新一 &#x1f50d;系列专栏&#xff1a;C面向对象&#xff08;类和对象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;终会照亮我前方的路 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录进…

计算机视觉与深度学习 | 低照度图像处理算法综述:发展、技术与趋势

文章目录 一、发展历程:从传统模型到智能融合 (一)传统模型构建阶段(1970s-2016) (二)深度学习应用阶段(2017-2020) (三)硬件-算法协同阶段(2021至今) 二、技术分类与性能对比 (一)传统方法体系 (二)深度学习方法 1. 监督学习模型 2. 无监督/自监督方法 3. 混…

责任链模式实践-开放银行数据保护及合规

责任链模式介绍什么是责任链模责任链模式是一种行为设计模式&#xff0c; 允许你将请求沿着处理者链进行发送。 收到请求后&#xff0c; 每个处理者均可对请求进行处理&#xff0c; 或将其传递给链上的下个处理者。责任链模式结构伪代码基于责任链的开放银行数据保护及合规实践…

npm install --global @dcloudio/uni-cli 时安装失败

这个日志显示在执行 npm install --global dcloudio/uni-cli 时安装失败&#xff0c;核心错误是 UNABLE_TO_GET_GET_ISSUER_CERT_LOCALLY&#xff08;无法获取本地颁发者证书&#xff09;&#xff0c;属于 HTTPS 证书验证失败 问题。错误原因npm 访问官方 registry&#xff08;…

吱吱企业通讯软件可私有化部署,构建安全可控的通讯办公平台

在当今激烈的市场竞争环境中&#xff0c;企业通讯已成为制胜的关键因素。吱吱作为一款专为企业管理设计的IM即时办公通讯软件&#xff0c;提供了高度安全的通讯办公环境&#xff0c;确保信息在内部流通的安全性与高效性&#xff0c;为企业数字化转型奠定了坚实的基础。 一、私有…

暄桐:唯有认真思考过死亡,才足以应对日常

暄桐是一间传统美学教育教室&#xff0c;创办于2011年&#xff0c;林曦是创办人和授课老师&#xff0c;教授以书法为主的传统文化和技艺&#xff0c;皆在以书法为起点&#xff0c;亲近中国传统之美&#xff0c;以实践和所得&#xff0c;滋养当下生活。初听庄子在妻子离世后“鼓…

目标检测领域基本概念

基于提议的方法&#xff0c;也常被称为两阶段 (Two-stage) 方法&#xff0c;是目标检测领域的经典范式。它们将目标检测任务分解为两个主要步骤&#xff1a;阶段一&#xff1a;区域提议 (Region Proposal Generation) 目标&#xff1a; 在图像中生成一系列可能包含物体的候选区…

【开题答辩全过程】以 基于SpringBoot的流浪猫狗领养系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…