Oracle 表分区简介
目录
- 一. 前置知识
- 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;
相关文章:
Oracle 表分区简介
目录 一. 前置知识1.1 什么是表分区1.2 表分区的优势1.3 表分区的使用条件 二. 表分区的方法2.1 范围分区(Range Partitioning)2.2 列表分区(List Partitioning)2.3 哈希分区(Hash Partitioning)2.4 复合分…...
安卓硬件加速hwui
安卓硬件加速 本文基于安卓11。 从 Android 3.0 (API 级别 11) 开始,Android 2D 渲染管道支持硬件加速,这意味着在 View 的画布上执行的所有绘图操作都使用 GPU。由于启用硬件加速所需的资源增加,你的应用程序将消耗更多内存。 软件绘制&am…...
【Bluedroid】HFP连接流程源码分析(二)
接上一篇【Bluedroid】HFP连接流程源码分析(一)-CSDN博客分析。本篇主要围绕RFCOMM Connect 与 RFCOMM UA Frame 的处理流程来展开分析。 RFCOMM Connect RFCOMM(Radio Frequency Communication)作为蓝牙协议栈的关键部分&#…...
基于文件系统分布式锁原理
分布式锁:在一个公共的存储服务上打上一个标记,如Redis的setnx命令,是先到先得方式获得锁,ZooKeeper有点像下面的demo,比较大小的方式判决谁获得锁。 package com.ldj.mybatisflex.demo;import java.util.*; import java.util.co…...
java语法知识(二)
1. class文件可以直接拖动到idea中,显示源码。 2.idea快捷键: sout : System.out.println 输出内容.sout :---》 System.out.println(输出内容); psvm: public static void main() 格式化:ctrl altL 复制粘贴:ctrld 3.注释…...
基于Piquasso的光量子计算机的模拟与编程
一、引言 在科技飞速发展的当下,量子计算作为前沿领域,正以前所未有的态势蓬勃崛起。它凭借独特的量子力学原理,为解决诸多经典计算难以攻克的复杂问题提供了全新路径。从优化物流配送网络,以实现资源高效调配,到药物分子结构的精准模拟,加速新药研发进程;从金融风险的…...
导出文件,能够导出但是文件打不开
背景: 在项目开发中,对于列表的查询,而后会有导出功能,这里导出的是一个excell表格。实现了两种,1.导出的文件,命名是前端传输过去的;2.导出的文件,命名是根据后端返回的文件名获取的…...
【动手学电机驱动】STM32-FOC(4)STM32之UART 串口通信
STM32-FOC(1)STM32 电机控制的软件开发环境 STM32-FOC(2)STM32 导入和创建项目 STM32-FOC(3)STM32 三路互补 PWM 输出 STM32-FOC(4)STM32之UART 串口通信 STM32-FOC(6&am…...
RabbitMQ 高可用方案:原理、构建与运维全解析
文章目录 前言:1 集群方案的原理2 RabbitMQ高可用集群相关概念2.1 设计集群的目的2.2 集群配置方式2.3 节点类型 3 集群架构3.1 为什么使用集群3.2 集群的特点3.3 集群异常处理3.4 普通集群模式3.5 镜像集群模式 前言: 在实际生产中,RabbitM…...
Center Loss 和 ArcFace Loss 笔记
一、Center Loss 1. 定义 Center Loss 旨在最小化类内特征的离散程度,通过约束样本特征与其类别中心之间的距离,提高类内特征的聚合性。 2. 公式 对于样本 xi 和其类别yi,Center Loss 的公式为: xi: 当前样本的特征向量&…...
深度解读微软Speech服务:让语音识别走进现实
大家好,今天我们来探讨一个激动人心的技术话题:微软的语音识别服务如何为我们提供强大的语音识别解决方案,特别是在电话录音中识别出不同的说话人。 场景描绘 想象一下,你有一段电话录音,并需要将其中的多个说话人区分…...
第21篇 基于ARM A9处理器用汇编语言实现中断<三>
Q:怎样编写ARM A9处理器汇编语言代码配置按键端口产生中断? A:使用Intel Monitor Program创建中断程序时,Linker Section Presets下拉菜单中需选择Exceptions。主程序在.vectors代码段为ARM处理器设置异常向量表,在…...
专题 - STM32
基础 基础知识 STM所有产品线(列举型号): STM产品的3内核架构(列举ARM芯片架构): STM32的3开发方式: STM32的5开发工具和套件: 若要在电脑上直接硬件级调试STM32设备,则…...
极客说|Azure AI Agent Service 结合 AutoGen/Semantic Kernel 构建多智能体解决⽅案
作者:卢建晖 - 微软高级云技术布道师 「极客说」 是一档专注 AI 时代开发者分享的专栏,我们邀请来自微软以及技术社区专家,带来最前沿的技术干货与实践经验。在这里,您将看到深度教程、最佳实践和创新解决方案。关注「极客说」&am…...
【C++指南】模板 深度解析
💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 目录 1. 引言 2. 模板的基本概念 3. 函数模板 3.1 定义和语法 3.2 函数模板实例化 3.3 隐式实例化 …...
【traefik】forwadAuth中间件跨namespace请求的问题
前情提要 - fowardAuth鉴权中间件的使用: 【traefik】使用forwardAuth中间件做网关层的全局鉴权 1. 问题 我的 traefik-ingress-controller 所在 namespace: traefik 业务服务所在 namespace: apps 路由与 forwardAuth 中间件配置如下: # 路由 apiV…...
【25考研】西南交通大学软件工程复试攻略!
一、复试内容 复试对考生的既往学业情况、外语听说交流能力、专业素质和科研创新能力,以及综合素质和一贯表现等进行全面考查,主要考核内容包括思想政治素质和道德品质、外语听说能力、专业素质和能力,综合素质及能力。考核由上机考试和面试两部分组成&a…...
在 Safari 浏览器中,快速将页面恢复到 100% 缩放(也就是默认尺寸)Command (⌘) + 0 (零)
在 Safari 浏览器中,没有一个专门的快捷键可以将页面恢复到默认的缩放比例。 但是,你可以使用以下两种方法快速将页面恢复到 100% 缩放(也就是默认尺寸): 方法一:使用快捷键 (最常用) Command (⌘) 0 (零…...
linux的大内核锁与顺序锁
大内核锁 Linux大内核锁(Big Kernel Lock,BKL)是Linux内核中的一种锁机制,用于保护内核资源,以下是关于它的详细介绍: 概念与作用 大内核锁是一种全局的互斥锁,在同一时刻只允许一个进程访问…...
CVE-2025-22777 (CVSS 9.8):WordPress | GiveWP 插件的严重漏洞
漏洞描述 GiveWP 插件中发现了一个严重漏洞,该插件是 WordPress 最广泛使用的在线捐赠和筹款工具之一。该漏洞的编号为 CVE-2025-22777,CVSS 评分为 9.8,表明其严重性。 GiveWP 插件拥有超过 100,000 个活跃安装,为全球无数捐赠平…...
牛客周赛 Round 76题解
小红出题 思路:我们发现,每七天可以获得15元,那么我们可以对7取模,看能有多少7的倍数,然后剩下的就是看是否超过5,超过5就直接15,否则加上天数*3 #include<bits/stdc.h> using namespace…...
【ARM】MDK如何将变量存储到指定内存地址
1、 文档目标 通过MDK的工程配置,将指定的变量存储到指定的内存地址上。 2、 问题场景 在项目工程的开发过程中,对于flash要进行分区,需要规划出一个特定的内存区域来存储变量。 3、软硬件环境 1)、软件版本:MDK 5.…...
解决在arm架构下的欧拉操作系统mysql8.4.2源码安装
目标:在欧拉的22.03 (LTS-SP4)版本操作系统,cpu的架构为ARM,源码安装mysql-8.4.2。 1.查看操作系统 # cat /etc/os-release NAME"openEuler" VERSION"22.03 (LTS-SP4)"# uname -i aarch642.mysql下载地址 mysql的下载…...
SpringAop
SpringAop aop定义核心概念aop基础实现执行流程 aop进阶通知类型切入点表达式的抽取通知的执行顺序切入点表达式execution方式实现annotation注解方式实现示例 笔记链接 aop定义 AOP:Aspect Oriented Programming(面向切面编程、面向方面编程)…...
C++内存泄露排查
内存泄漏是指程序动态分配的内存未能及时释放,导致系统内存逐渐耗尽,最终可能造成程序崩溃或性能下降。在C中,内存泄漏通常发生在使用new或malloc等分配内存的操作时,但没有正确地使用delete或free来释放这块内存。 在日常开发过程…...
Cesium小知识:pointPrimitive collection 详解
Cesium.PointPrimitiveCollection 是 Cesium 中用于高效管理和渲染大量点(points)的一个类。它允许你创建和管理大量的 PointPrimitive 实例,这些实例可以用来表示地理空间中的点数据,如传感器位置、车辆位置、兴趣点等。与直接使用 Cesium.Entity 相比,PointPrimitiveCol…...
从 Conda 到 Pip-tools:Python 依赖管理全景探索20250113
从 Conda 到 Pip-tools:Python 依赖管理全景探索 引言 在 Python 开发中,依赖管理是一个"常见但复杂"的问题:一次简单的版本冲突可能让团队调试数小时;一次不受控的依赖升级可能让生产环境瘫痪。随着项目规模的增加和…...
浅谈云计算01 | 云计算服务的特点
在当今数字化时代,云计算作为一种强大的技术解决方案,正逐渐改变着企业和个人对信息技术的使用方式。本文将详细探讨云计算的五个主要特点,包括按需自助服务、广泛的网络接入、资源池化、快速弹性伸缩以及可计量服务。 一、按需自助服务 云…...
2025年,华为认证HCIA、HCIP、HCIE 该如何选择?
眼看都到 2025 年啦,华为认证还吃香不? 把这问题摆在每个网络工程师跟前,答案可没那么容易说清楚。 到底考不考它值当不值当,重点在于您自己的职业规划,还有对行业走向的领会。 2025 年华为认证仍然值得一考&#…...
使用Selenium进行网页自动化测试
在使用Selenium进行网页自动化测试时,获取网络请求数据(即network数据)并不直接由Selenium库提供。Selenium主要用于与网页内容进行交互(如点击、输入文本、获取页面元素等),但它本身不拦截或记录网络请求。…...
Linux 下 mtrace 的详细介绍
在 Linux 系统中,内存管理是操作系统的一项重要任务,而内存泄漏(Memory Leak)是开发过程中常见且棘手的问题之一。为了帮助开发者追踪和调试内存泄漏问题,mtrace 提供了一种有效的方式来检测和分析内存的分配与释放情况…...
【DB-GPT】开启数据库交互新篇章的技术探索与实践
一、引言:AI原生数据应用开发的挑战与机遇 在数字化转型的浪潮中,企业对于智能化应用的需求日益增长。然而,传统的数据应用开发方式面临着诸多挑战,如技术栈复杂、开发周期长、成本高昂、难以维护等。这些问题限制了智能化应用的…...
深入 Flutter 和 Compose 在 UI 渲染刷新时 Diff 实现对比
众所周知,不管是什么框架,在前端 UI 渲染时,都会有构造出一套相关的渲染树,并且在 UI 更新时,为了尽可能提高性能,一般都只会进行「差异化」更新,而不是对整个 UI Tree 进行刷新,所以…...
Android 网络层相关介绍
关注 Android 默认支持的网络管理行为,默认支持的网络服务功能。 功能术语 术语缩写全称释义DHCPv6Dynamic Host Configuration Protocol for IPv6动态主机配置协议的第六版,用于在IPv6网络中动态分配IP地址和其他网络配置参数。DNS Domain Name System域名系统。LLALink-Loc…...
ThreeJs开发环境安装与首个DEMO
安装开发环境 我这边使用的JetBrain的WebStorm,咨询过很多其他开发从业者,普遍使用vscode的比较多。但是考虑到vscode涉及到不少插件安装和IDE配置,作为傻瓜式入门,我这边采用WebStorm。 下载地址: WebStorm: The J…...
【Vim Masterclass 笔记09】S06L22:Vim 核心操作训练之 —— 文本的搜索、查找与替换操作(第一部分)
文章目录 S06L22 Search, Find, and Replace - Part One1 从光标位置起,正向定位到当前行的首个字符 b2 从光标位置起,反向查找某个字符3 重复上一次字符查找操作4 定位到目标字符的前一个字符5 单字符查找与 Vim 命令的组合6 跨行查找某字符串7 Vim 的增…...
js:根据后端返回数据的最大值进行计算然后设置这个最大值为百分之百,其他的值除这个最大值
问: 现在tabData.value 接收到了后端返回的数据, [{text:人力,percentage:‘90’},{text:物品,percentage:‘20’},{text:物理,percentage:‘50’},{text:服务,percentageÿ…...
线形回归与小批量梯度下降实例
1、准备数据集 import numpy as np import matplotlib.pyplot as pltfrom torch.utils.data import DataLoader from torch.utils.data import TensorDataset######################################################################### #################准备若干个随机的x和…...
【数学】概率论与数理统计(三)
文章目录 [toc] 随机变量的概念随机事件数量化随机变量 离散型随机变量及其概率分布随机变量的分类离散型随机变量离散型随机变量的常见分布两点分布二项分布泊松分布泊松定理证明 泊松分布 超几何分布几何分布 连续型随机变量及其概率分布连续型随机变量零概率事件几乎必然发生…...
如何在 Linux、MacOS 以及 Windows 中打开控制面板
控制面板不仅仅是一系列图标和菜单的集合;它是通往优化个人计算体验的大门。通过它,用户可以轻松调整从外观到性能的各种参数,确保他们的电脑能够完美地适应自己的需求。无论是想要提升系统安全性、管理硬件设备,还是简单地改变桌…...
《AI赋能鸿蒙Next,开启智能关卡设计新时代》
在游戏开发领域,关卡设计是至关重要的一环,它直接影响着玩家的游戏体验和沉浸感。而随着人工智能技术的飞速发展,结合鸿蒙Next系统的强大功能,为游戏的智能关卡设计带来了全新的思路和方法。 利用AI学习玩家行为模式 在鸿蒙Next…...
Safari浏览器上ico图标显示不出来,怎么解决?
Safari浏览器上ico图标显示不出来,怎么解决? 如果Safari浏览器上ico图标显示不出来了,如下图,该图标显示为灰色。 可以关闭Safari浏览器,并清除历史记录,就可以解决啦。 另外,如果多个网站这…...
Java Bean Validation 不适用Spring的情况下自定义validation注解
Java Bean Validation(也称为 JSR 380,为 Bean Validation 2.0 规范)提供了一套基本的注解,用于定义和验证 Java Bean 的属性。例如: NotNull:属性不能为空 Size:字符串、集合或数组的大小有约…...
【算法学习笔记】30:埃氏筛(Sieve of Eratosthenes)和线性筛(Linear Sieve)
测试题目:AcWing 868. 筛质数 埃氏筛(Sieve of Eratosthenes) 如果 i i i是素数,每次把 i i i的倍数都筛掉,存在重复筛选,时间复杂度 n ⋅ l o g ( l o g n ) n \cdot log(logn) n⋅log(logn)。 #includ…...
风控业务——评分模型
本文主要讲述了金融机构风控模型的重要性及其应用。首先,开头概述了风控模型的整体建模流程,包括特征工程和建模方法。接着,本文强调了贷前、贷中、贷后三个阶段中风控模型的应用,如信用评分、行为评分和催收评分。同时还提到了信…...
jupyter notebook练手项目:线性回归——学习时间与成绩的关系
线性回归——学习时间与学习成绩的关系 第1步:导入工具库 pandas——数据分析库,提供了数据结构(如DataFrame和Series)和数据操作方法,方便对数据集进行读取、清洗、转换等操作。 matplotlib——绘图库,p…...
DDD - 微服务设计与领域驱动设计实战(上)_统一建模语言及事件风暴会议
文章目录 Pre概述业务流程需求分析的困境统一语言建模事件风暴会议什么是事件风暴(Event Storming)事件风暴会议 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服务、实体与值对…...
《自动驾驶与机器人中的SLAM技术》ch7:基于 ESKF 的松耦合 LIO 系统
目录 基于 ESKF 的松耦合 LIO 系统 1 坐标系说明 2 松耦合 LIO 系统的运动和观测方程 3 松耦合 LIO 系统的数据准备 3.1 CloudConvert 类 3.2 MessageSync 类 4 松耦合 LIO 系统的主要流程 4.1 IMU 静止初始化 4.2 ESKF 之 运动过程——使用 IMU 预测 4.3 使用 IMU 预测位姿进…...
day07_Spark SQL
文章目录 day07_Spark SQL课程笔记一、今日课程内容二、Spark SQL函数定义(掌握)1、窗口函数2、自定义函数背景2.1 回顾函数分类标准:SQL最开始是_内置函数&自定义函数_两种 2.2 自定义函数背景 3、Spark原生自定义UDF函数3.1 自定义函数流程&#x…...
【LC】2270. 分割数组的方案数
题目描述: 给你一个下标从 0 开始长度为 n 的整数数组 nums 。 如果以下描述为真,那么 nums 在下标 i 处有一个 合法的分割 : 前 i 1 个元素的和 大于等于 剩下的 n - i - 1 个元素的和。下标 i 的右边 至少有一个 元素,也就是…...