Oracle 表分区简介

news2025/1/13 23:34:51

目录

  • 一. 前置知识
    • 1.1 什么是表分区
    • 1.2 表分区的优势
    • 1.3 表分区的使用条件
  • 二. 表分区的方法
    • 2.1 范围分区(Range Partitioning)
    • 2.2 列表分区(List Partitioning)
    • 2.3 哈希分区(Hash Partitioning)
    • 2.4 复合分区(Composite Partitioning)
  • 三. 表分区的查看
    • 3.1 分区信息的查看
    • 3.2 分区数据的查看
  • 四. 分区表的维护
    • 4.1 分区的添加与删除
    • 4.2 分区的合并与拆分
    • 4.3 重命名分区
    • 4.4 分区交换
    • 4.5 其他操作


一. 前置知识

1.1 什么是表分区

表分区是数据库中的一种技术,用于将一张大表的数据按一定的规则拆分成多个较小的物理存储单元,这些物理存储单元被称为分区(Partition)。
尽管数据被分布到不同的分区中,但从逻辑上,分区表仍然作为一个整体表进行访问。

在这里插入图片描述

1.2 表分区的优势

⏹易于管理:

  • 管理更灵活:可以对某个分区单独执行备份、恢复、索引重建等操作。
  • 删除数据更高效:可以直接删除整个分区,而无需删除每一行数据。

⏹数据分割:

  • 数据被分配到多个分区中,每个分区可以独立存储在不同的表空间或磁盘上。
  • 例如,按时间、区域、ID 等规则划分数据。

⏹性能优化:

  • 查询和操作时可以通过 分区裁剪(Partition Pruning)减少扫描的数据量,从而提高查询效率。
  • 分区表支持并行操作(Parallelism),多个分区可以同时被不同的进程访问或操作。

⏹提高存储利用率:

  • 不同分区可以存储在不同的表空间或磁盘上,优化存储性能和分布。

1.3 表分区的使用条件

  • 表大于2G;
  • 对一个表并行进行DML操作;
  • 为了平衡硬盘I/O,需将同一个表分区到不同的表空间,必须对表进行分区;
  • 要将表的一部分设为只读状态,另一部分设为读写状态,需要对表进行分区;
  • 要将表一部分设为可用状态,另一部分设为不可用状态,需要队标进行分区;
  • 要将表中数据按照一定规则分散到不同的磁盘中去,需要对表进行分区;

二. 表分区的方法

2.1 范围分区(Range Partitioning)

⏹范围分区是根据分区列值的范围对表进行分区,每条记录根据分区列值的范围分配到不同的分区表中。
常用于按照时间和日期分区的表。

  • partition by range:指定使用范围分区
  • partition sales_q1_2013:指定分区的名称
  • values less than:指定分区内数据的存储范围
  • tablespace TBS1:指定该分区所对应的表空间,若不显示指定的话,则使用默认表空间
create table sale_by_range
(
  prod_id number, 
  cust_id number,
  time_id date,
  channel_id char(1),
  promo_id number(6),
  quantity_sold number(3),
  amount_sold number
)
partition by range(time_id)
(
  -- 若 time_id < 2013-01-01 , 则数据分布到 sales_q1_2013 分区
  partition sales_q1_2013 values less than(TO_DATE('2013-01-01', 'YYYY-MM-DD')) tablespace TBS1,
  -- 若 2013-01-01 < time_id < 2016-04-01 , 则数据分布到 sales_q2_2016 分区
  partition sales_q2_2016 values less than(TO_DATE('2016-04-01', 'YYYY-MM-DD')) tablespace TBS2,
  partition sales_q3_2019 values less than(TO_DATE('2019-04-01', 'YYYY-MM-DD')) tablespace TBS3,
  partition sales_q4_2021 values less than(TO_DATE('2021-04-01', 'YYYY-MM-DD')) tablespace TBS4,
  -- 2021-04-01 < time_id , 则数据分布到 sales_q5_202X 分区
  partition sales_q5_202X values less than (MAXVALUE) tablespace TBS5
)

2.2 列表分区(List Partitioning)

⏹按离散值(列表)划分数据,适合按地区、类别等分类的数据。

  • partition otherprovince values(default):如果列值不符合其它分区记录的要求,保存在该分区表
create table sales_by_list
(
  dept number,
  deptname varchar(20),
  quarterly_sales number(10,2),
  province varchar(20)
)
partition by list(province)
(
  -- 广东、福建的存放在southeast分区表
  partition southeast values('guangdong','fujian') tablespace TBS1,
  -- 黑龙江、辽宁、吉林放在northeast分区表  
  partition northeast values('heilongjiang','liaoning','jilin') tablespace TBS2,
  -- 四川、云南、贵州放在southwest分区表
  partition southwest values('sichuan','yunnan','guizhou') tablespace TBS3,
  -- 其他省的放在otherprivince分区表
  partition otherprovince values(default) tablespace TBS4
)

2.3 哈希分区(Hash Partitioning)

⏹按哈希函数将数据均匀分布到多个分区中。适合数据分布随机、访问均匀的场景。

  • 在 Oracle 数据库中,哈希分区(Hash Partitioning) 的分区名称通常由系统自动生成(例如 SYS_P564、SYS_P565等)。
  • 用户无法直接在建表语句中指定哈希分区的名称。
create table charge_fixed_work (
    charge_no number(20,0) not null primary key,
    atzt_no number(20,0) not null,
    charge_regst_busins_date varchar2(8) not null,
    charge_expct_date varchar2(8) not null,
    charge_regst_date varchar2(8) not null,
    charge_regst_time varchar2(8) not null,
    charge_proc_result_cd varchar2(8) not null
)
partition by hash (charge_no)
partitions 4
-- 指定4个分区存储在指定的表空间中
store in (tablespace1, tablespace2, tablespace3, tablespace4);

2.4 复合分区(Composite Partitioning)

⏹Oracle支持的6种复合分区方法:

  • Range-Range
  • Range-List
  • Range-Hash
  • List-Range
  • List-List
  • List-Hash
CREATE TABLE sales_by_range_list (
    dept NUMBER,
    deptname VARCHAR(20),
    time_id DATE,
    quarterly_sales NUMBER(10, 2),
    province VARCHAR(20)
)
-- 先使用范围分区
PARTITION BY RANGE (time_id)
-- 再使用列表分区进一步细化
SUBPARTITION BY LIST (province)
(
    -- 第一季度销售情况的分区,并指定表空间
    PARTITION sales_q1_2024 VALUES LESS THAN (TO_DATE('2024-03-01', 'YYYY-MM-DD')) TABLESPACE TBS1
    (
        -- 广东、福建的存放在 sales_q1_2024_southeast 分区表
        SUBPARTITION sales_q1_2024_southeast VALUES ('guangdong', 'fujian'),
        SUBPARTITION sales_q1_2024_northeast VALUES ('heilongjiang', 'liaoning', 'jilin'),
        SUBPARTITION sales_q1_2024_southwest VALUES ('sichuan', 'yunnan', 'guizhou'),
        SUBPARTITION sales_q1_2024_otherprovince VALUES (DEFAULT)
    ),
    -- 第二季度销售情况
    PARTITION sales_q2_2024 VALUES LESS THAN (TO_DATE('2024-06-01', 'YYYY-MM-DD')) TABLESPACE TBS2
    (
        SUBPARTITION sales_q2_2024_southeast VALUES ('guangdong', 'fujian'),
        SUBPARTITION sales_q2_2024_northeast VALUES ('heilongjiang', 'liaoning', 'jilin'),
        SUBPARTITION sales_q2_2024_southwest VALUES ('sichuan', 'yunnan', 'guizhou'),
        SUBPARTITION sales_q2_2024_otherprovince VALUES (DEFAULT)
    ),
    -- 第三季度销售情况
    PARTITION sales_q3_2024 VALUES LESS THAN (TO_DATE('2024-09-01', 'YYYY-MM-DD')) TABLESPACE TBS3
    (
        SUBPARTITION sales_q3_2024_southeast VALUES ('guangdong', 'fujian'),
        SUBPARTITION sales_q3_2024_northeast VALUES ('heilongjiang', 'liaoning', 'jilin'),
        SUBPARTITION sales_q3_2024_southwest VALUES ('sichuan', 'yunnan', 'guizhou'),
        SUBPARTITION sales_q3_2024_otherprovince VALUES (DEFAULT)
    ),
    -- 第四季度销售情况
    PARTITION sales_q4_2024 VALUES LESS THAN (MAXVALUE) TABLESPACE TBS4
    (
        SUBPARTITION sales_q4_2024_southeast VALUES ('guangdong', 'fujian'),
        SUBPARTITION sales_q4_2024_northeast VALUES ('heilongjiang', 'liaoning', 'jilin'),
        SUBPARTITION sales_q4_2024_southwest VALUES ('sichuan', 'yunnan', 'guizhou'),
        SUBPARTITION sales_q4_2024_otherprovince VALUES (DEFAULT)
    )
);

三. 表分区的查看

3.1 分区信息的查看

  • DBA_PART_TABLES:查看数据库里面的全部分区表信息,需要具有DBA权限
  • ALL_PART_TABLES:查看当前用户可见的全部分区表信息;
  • USER_PART_TABLES:查看当前用户拥有的全部分区表信息;

⏹查看当前用户拥有的的全部分区表信息

SELECT * FROM USER_PART_TABLES;

在这里插入图片描述

⏹查询分区表信息

SELECT * FROM USER_TAB_PARTITIONS;

在这里插入图片描述

⏹查询子分区表信息

SELECT * FROM USER_TAB_SUBPARTITIONS;

在这里插入图片描述

3.2 分区数据的查看

⏹在向分区表插入数据时,我们最关心的就是数据是否按照我们的规划进入了各个分区表,例如向SALE_BY_RANGE表中投入数据

INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (1, 1, TO_DATE('2012-12-12', 'YYYY-MM-DD'), 'A', 1, 10, 100);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (2, 2, TO_DATE('2013-02-15', 'YYYY-MM-DD'), 'B', 2, 20, 200);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (3, 3, TO_DATE('2014-06-05', 'YYYY-MM-DD'), 'A', 3, 30, 300);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (4, 4, TO_DATE('2016-05-01', 'YYYY-MM-DD'), 'B', 4, 40, 400);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (5, 5, TO_DATE('2019-06-20', 'YYYY-MM-DD'), 'A', 5, 50, 500);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (6, 6, TO_DATE('2021-05-15', 'YYYY-MM-DD'), 'B', 6, 60, 600);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (7, 7, TO_DATE('2016-02-19', 'YYYY-MM-DD'), 'A', 7, 70, 700);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (8, 8, TO_DATE('2021-07-10', 'YYYY-MM-DD'), 'B', 8, 80, 800);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (9, 9, TO_DATE('2019-09-09', 'YYYY-MM-DD'), 'A', 9, 90, 900);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (10, 10, TO_DATE('2021-01-01', 'YYYY-MM-DD'), 'B', 10, 100, 1000);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (11, 11, TO_DATE('2012-12-25', 'YYYY-MM-DD'), 'A', 11, 110, 1100);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (12, 12, TO_DATE('2013-03-10', 'YYYY-MM-DD'), 'B', 12, 120, 1200);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (13, 13, TO_DATE('2015-07-20', 'YYYY-MM-DD'), 'A', 13, 130, 1300);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (14, 14, TO_DATE('2016-11-22', 'YYYY-MM-DD'), 'B', 14, 140, 1400);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (15, 15, TO_DATE('2018-03-15', 'YYYY-MM-DD'), 'A', 15, 150, 1500);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (16, 16, TO_DATE('2020-06-17', 'YYYY-MM-DD'), 'B', 16, 160, 1600);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (17, 17, TO_DATE('2019-05-02', 'YYYY-MM-DD'), 'A', 17, 170, 1700);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (18, 18, TO_DATE('2020-12-20', 'YYYY-MM-DD'), 'B', 18, 180, 1800);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (19, 19, TO_DATE('2020-08-10', 'YYYY-MM-DD'), 'A', 19, 190, 1900);
INSERT INTO sale_by_range (prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold) VALUES (20, 20, TO_DATE('2021-02-14', 'YYYY-MM-DD'), 'B', 20, 200, 2000);

⏹若 2013-01-01 < time_id < 2016-04-01 , 则数据理论上会分布到 sales_q2_2016 分区

-- SELECT * FROM 表名 PARTITION(分区名);
SELECT * FROM SALE_BY_RANGE PARTITION(SALES_Q2_2016);

在这里插入图片描述


四. 分区表的维护

4.1 分区的添加与删除

⏹可以通过 ALTER TABLE 添加新的分区。通常是在范围分区表中,您会根据需要添加新的分区。

ALTER TABLE sales_by_range
ADD PARTITION sales_q6_2023 VALUES LESS THAN (TO_DATE('2023-07-01', 'YYYY-MM-DD'))
TABLESPACE TBS6;

⏹当某些分区数据不再需要时,可以删除相应的分区。

ALTER TABLE sales_by_range
DROP PARTITION sales_q1_2013;

4.2 分区的合并与拆分

⏹合并分区可以将多个分区的数据合并成一个分区,这对减少分区的数量或管理分区非常有用。

ALTER TABLE sales_by_range
MERGE PARTITIONS sales_q1_2013, sales_q2_2013
INTO PARTITION sales_q1_q2_2013;

⏹对于复合分区表,如果需要管理子分区,可以合并多个子分区。

ALTER TABLE sales_by_range
MERGE SUBPARTITIONS sales_q1_2024_southeast, sales_q1_2024_northeast
INTO SUBPARTITION sales_q1_2024_southeast_northeast;

⏹拆分分区用于将现有分区分成两个或更多的分区。这对于将过大的分区拆分为更小的分区非常有用。

ALTER TABLE sales_by_range
SPLIT PARTITION sales_q3_2019 AT (TO_DATE('2019-06-01', 'YYYY-MM-DD'))
INTO (
    PARTITION sales_q3_2019_part1,
    PARTITION sales_q3_2019_part2
);

4.3 重命名分区

⏹您可以重命名分区,以便更清楚地反映其数据的含义。

ALTER TABLE sales_by_range
RENAME PARTITION sales_q1_2024 TO sales_q1_2024_new;

4.4 分区交换

⏹将分区中的数据交换到其他表或分区。可以用来快速移动数据。

ALTER TABLE sales_by_range
EXCHANGE PARTITION sales_q1_2013
WITH TABLE temp_sales_q1_2013;

4.5 其他操作

⏹分区可以禁用,以便不再插入新数据,或启用以恢复操作。

ALTER TABLE sales_by_range DISABLE PARTITION sales_q4_2021;

⏹定期监控分区表的性能和空间使用情况。可以使用查询查看分区表的分区状态。

SELECT TABLE_NAME, PARTITION_NAME, HIGH_VALUE, TABLESPACE_NAME
FROM DBA_TAB_PARTITIONS
WHERE TABLE_NAME = 'SALES_BY_RANGE';

⏹使用分区表时,定期对数据进行压缩(如针对历史数据)可以节省空间。压缩可以在分区级别进行。

ALTER TABLE sales_by_range MOVE PARTITION sales_q1_2013 TABLESPACE TBS1 COMPRESS FOR ALL OPERATIONS;

⏹重新组织分区表以提高查询性能或释放空间。这包括重新排序和重新分配存储空间。

ALTER TABLE sales_by_range REORGANIZE PARTITION sales_q2_2024;

⏹定期检查分区表的健康状态,并对损坏的分区进行修复。

SELECT * FROM DBA_TAB_PARTITIONS WHERE TABLE_NAME = 'SALES_BY_RANGE';

-- 若有问题,可以使用以下语句修复:
ALTER TABLE sales_by_range RECOVER PARTITION sales_q3_2019;

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

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

相关文章

罗永浩再创业,这次盯上了 AI?

罗永浩&#xff0c;1972年7月9日生于中国延边朝鲜族自治州的一个军人家庭&#xff0c;是一名朝鲜族人&#xff1b;早年在新东方授课&#xff0c;2004年当选 “网络十大红人” &#xff1b;2006年8月1日&#xff0c;罗永浩创办牛博网&#xff1b;2008年5月&#xff0c;罗永浩注册…

自然语言处理基础:全面概述

自然语言处理基础&#xff1a;全面概述 什么是NLP及其重要性、NLP的核心组件、NLU与NLG、NLU与NLG的集成、NLP的挑战以及NLP的未来 自然语言处理&#xff08;NLP&#xff09;是人工智能&#xff08;AI&#xff09;中最引人入胜且具有影响力的领域之一。它驱动着我们日常使用的…

WPF系列八:图形控件Path

简介 Path控件支持一种称为路径迷你语言&#xff08;Path Mini-Language&#xff09;的紧凑字符串格式&#xff0c;用于描述复杂的几何图形。这种语言通过一系列命令字母和坐标来定义路径上的点和线段&#xff0c;最终绘制出想要的图形。 绘制任意形状&#xff1a;可以用来绘…

计算机图形学【绘制立方体和正六边形】

工具介绍 OpenGL&#xff1a;一个跨语言的图形API&#xff0c;用于渲染2D和3D图形。它提供了绘制图形所需的底层功能。 GLUT&#xff1a;OpenGL的一个工具库&#xff0c;简化了窗口创建、输入处理和其他与图形环境相关的任务。 使用的函数 1. glClear(GL_COLOR_BUFFER_BIT |…

有限元分析学习——Anasys Workbanch第一阶段笔记(10)桌子载荷案例分析_实际载荷与均布载荷的对比

目录 0 序言 1 桌子案例 2 模型简化 3 方案A 前处理 1&#xff09;分析类型选择 2&#xff09;材料加载 3&#xff09;约束、载荷及接触 4&#xff09;控制网格(网格大小需要根据结果不断调整) 初始计算结果 加密后计算结果 4 方案B、C 前处理 1&#xff09;分析…

Docker compose 使用 --force-recreate --no-recreate 控制重启容器时的行为【后续】

前情&#xff1a;上一篇实际是让AI工具帮我总结了一下讨论的内容&#xff0c;这里把讨论的过程贴出来&#xff0c;这个讨论是为解决实际问题 前文https://blog.csdn.net/wgdzg/article/details/145039446 问题说明&#xff1a; 我使用 docker compose 管理我的容器&#xff0…

Mysql--基础篇--多表查询(JOIN,笛卡尔积)

在MySQL中&#xff0c;多表查询&#xff08;也称为联表查询或JOIN操作&#xff09;是数据库操作中非常常见的需求。通过多表查询&#xff0c;你可以从多个表中获取相关数据&#xff0c;并根据一定的条件将它们组合在一起。MySQL支持多种类型的JOIN操作&#xff0c;每种JOIN都有…

postgresql|数据库|利用sqlparse和psycopg2库批量按顺序执行SQL语句(psyconpg2新优化版本)

一、 旧版批量执行SQL脚本的python文件缺点&#xff0c;优点&#xff0c;以及更新内容 书接上回&#xff0c;postgresql|数据库开发|python的psycopg2库按指定顺序批量执行SQL文件(可离线化部署)_python sql psycopg2-CSDN博客 这个python脚本写了很久了&#xff0c;最近开始…

5个不同类型的数据库安装

各种社区版本下载官方地址&#xff1a;MySQL :: MySQL Community Downloads 一、在线YUM仓库&#xff08;Linux&#xff09; 选择 MySQL Yum Repository 选择对应版本下载仓库安装包&#xff08;No thanks, just start my download.&#xff09; 下载方法1&#xff1a;下载到本…

shell基础使用及vim的常用快捷键

一、shell简介 参考博文1 参考博文2——shell语法及应用 参考博文3——vi的使用 在linux中有很多类型的shell&#xff0c;不同的shell具备不同的功能&#xff0c;shell还决定了脚本中函数的语法&#xff0c;Linux中默认的shell是 / b in/ b a s h &#xff0c;流行的shell…

Spring Data Elasticsearch简介

一、Spring Data Elasticsearch简介 1 SpringData ElasticSearch简介 Elasticsearch是一个实时的分布式搜索和分析引擎。它底层封装了Lucene框架,可以提供分布式多用户的全文搜索服务。 Spring Data ElasticSearch是SpringData技术对ElasticSearch原生API封装之后的产物,它通…

【巨实用】Git客户端基本操作

本文主要分享Git的一些基本常规操作&#xff0c;手把手教你如何配置~ ● 一个文件夹中初始化Git git init ● 为了方便以后提交代码需要对git进行配置&#xff08;第一次使用或者需求变更的时候&#xff09;&#xff0c;告诉git未来是谁在提交代码 git config --global user.na…

有收到腾讯委托律师事务所向AppStore投诉带有【水印相机】主标题名称App的开发者吗

近期&#xff0c;有多名开发者反馈&#xff0c;收到来自腾讯科技 (深圳) 有限公司委托北京的一家**诚律师事务所卞&#xff0c;写给AppStore的投诉邮件。 邮件内容主要说的是&#xff0c;腾讯注册了【水印相机】这四个字的商标&#xff0c;所以你们这些在AppStore上的app&…

导出文件,能够导出但是文件打不开

背景&#xff1a; 在项目开发中&#xff0c;对于列表的查询&#xff0c;而后会有导出功能&#xff0c;这里导出的是一个excell表格。实现了两种&#xff0c;1.导出的文件&#xff0c;命名是前端传输过去的&#xff1b;2.导出的文件&#xff0c;命名是根据后端返回的文件名获取的…

Redis 源码分析-内部数据结构 dict

Redis 源码分析-内部数据结构 dict 在上一篇 Redis 数据库源码分析 提到了 Redis 其实用了全局的 hash 表来存储所有的键值对&#xff0c;即下方图示的 dict&#xff0c;dict 中有两个数组&#xff0c;其中 ht[1] 只在 rehash 时候才真正用到&#xff0c;平时都是指向 null&am…

010:传统计算机视觉之大津算法初探

本文为合集收录&#xff0c;欢迎查看合集/专栏链接进行全部合集的系统学习。 合集完整版请参考这里。 上一节学习了利用 Canny 算法来完成一个图片的边缘检测&#xff0c;从而可以区分出图像的边缘。 本节再了解一个计算机视觉中更常见的应用&#xff0c;那就是把图片的前景和…

使用Cilium/eBPF实现大规模云原生网络和安全

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 目录 抽象 1 Trip.com 云基础设施 1.1 分层架构 1.2 更多细节 2 纤毛在 Trip.com 2.1 推出时间表 2.2 自定义 2.3 优化和调整 2.3.1 解耦安装 2.3.2 避免重试/重启风暴 2.3.3 稳定性优先 2…

怎么把word试题转成excel?

在教育行业、学校管理以及在线学习平台中&#xff0c;试题库的高效管理是一项核心任务。许多教育工作者和系统开发人员常常面临将 Word 中的试题批量导入 Excel 的需求。本文将详细介绍如何快速将试题从 Word 转换为 Excel&#xff0c;帮助您轻松解决繁琐的数据整理问题&#x…

css盒子水平垂直居中

目录 1采用flex弹性布局&#xff1a; 2子绝父相margin&#xff1a;负值&#xff1a; 3.子绝父相margin:auto&#xff1a; 4子绝父相transform&#xff1a; 5通过伪元素 6table布局 7grid弹性布局 文字 水平垂直居中链接&#xff1a;文字水平垂直居中-CSDN博客 以下为盒子…

Spring 项目 基于 Tomcat容器进行部署

文章目录 一、前置知识二、项目部署1. 将写好的 Spring 项目先打包成 war 包2. 查看项目工件&#xff08;Artifact&#xff09;是否存在3. 配置 Tomcat3.1 添加一个本地 Tomcat 容器3.2 将项目部署到 Tomcat 4. 运行项目 尽管市场上许多新项目都已经转向 Spring Boot&#xff0…