当前位置: 首页 > news >正文

oracle 分区表介绍

oracle 分区表介绍


Oracle 分区表是一个非常强大的数据库功能,可以将一个大的表分割成多个更小、更易管理的块(分区)。这种分区结构在处理大规模数据时非常有用,因为它能改善性能、简化维护和管理,并支持高效的数据存取

文章目录

  • oracle 分区表介绍
    • 前言
    • 范围分区
    • 列表分区
    • 哈希分区
    • 复合分区
    • 查询分区
    • 分区表的使用场景


前言

分区表(Partitioned Table)是数据库中一种特殊的表结构,它通过将数据分割成多个分区来提高查询和管理性能。每个分区都包含数据的一个子集,分区表通常用于存储大量数据,通过分区使得操作数据更为高效。分区表的优点包括:

提高查询性能:对于大数据量的表,通过查询特定分区的数据而非整个表来提高查询效率。
提高管理效率:分区表可以将数据根据某些条件(如时间、范围、列表等)分区,使得数据的备份、恢复和删除等操作更为方便。
提高并发性:分区表可以实现不同分区并行处理,提升数据库的并发能力。

分区的类型
范围分区(Range Partitioning):按范围划分数据,例如按日期区分数据。
列表分区(List Partitioning):按照指定的离散值划分数据,比如按地区分。
哈希分区(Hash Partitioning):通过哈希函数将数据分配到不同的分区中,常用于负载均衡。
复合分区(Composite Partitioning):结合多种分区方式,如先按范围分区,再按哈希分区。

我们 用soctt 用户的 emp表 和 dept 表 举例

emp表 
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','CLERK',7566,to_date('19-4-1987','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('23-5-1987','dd-mm-yyyy'),1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);

范围分区

解释:
表定义:emp_partitioned 表和原始的 EMP 表结构相同,包含了员工的基本信息字段。

分区方式:根据员工的 HIREDATE(入职日期)列进行分区,使用 范围分区(Range Partitioning)。每个分区包含一个特定年份的数据,VALUES LESS THAN 定义了每个分区的上限日期。

分区名称:我们为每个分区命名,如 p_1980、p_1981 等,代表每年的数据。

-- 创建一个基于范围分区的 EMP 表
CREATE TABLE emp_partitioned (empno      NUMBER(4),ename      VARCHAR2(10),job        VARCHAR2(9),mgr        NUMBER(4),hiredate   DATE,sal        NUMBER(7,2),comm       NUMBER(7,2),deptno     NUMBER(2)
)
PARTITION BY RANGE (hiredate) (PARTITION p_1980 VALUES LESS THAN (TO_DATE('1981-01-01', 'YYYY-MM-DD')),PARTITION p_1981 VALUES LESS THAN (TO_DATE('1982-01-01', 'YYYY-MM-DD')),PARTITION p_1982 VALUES LESS THAN (TO_DATE('1983-01-01', 'YYYY-MM-DD')),PARTITION p_1983 VALUES LESS THAN (TO_DATE('1984-01-01', 'YYYY-MM-DD')),PARTITION p_1984 VALUES LESS THAN (TO_DATE('1985-01-01', 'YYYY-MM-DD'))
);

导入数据


INSERT INTO emp_partitioned
SELECT * FROM EMP where to_char(hiredate,'YYYY-MM-DD')<'1986-01-01'

查询 emp_partitioned 的 区分p_1982

SELECT * 
FROM emp_partitioned PARTITION (p_1982) E
LEFT JOIN DEPT D  ON E.EMPNO = D.DEPTNO;

– 查询 1992 年入职的员工
查询分区表
当表被分区后,查询时 Oracle 会自动根据查询条件来裁剪不相关的分区。例如,如果查询的是 1982 年的数据,Oracle 只会访问 p_1982 分区,而不需要扫描所有的分区。

SELECT * FROM emp_partitioned
WHERE hiredate BETWEEN TO_DATE('1982-01-01', 'YYYY-MM-DD') AND TO_DATE('1982-12-31', 'YYYY-MM-DD');

添加分区

ALTER TABLE emp_partitioned ADD PARTITION p_1985 VALUES LESS THAN (TO_DATE('1986-01-01', 'YYYY-MM-DD'));

拆分分区:

ALTER TABLE emp_partitioned SPLIT PARTITION p_1981 AT (TO_DATE('1981-06-01', 'YYYY-MM-DD')) 
INTO (PARTITION p_1981_1 VALUES LESS THAN (TO_DATE('1981-06-01', 'YYYY-MM-DD')), PARTITION p_1981_2 VALUES LESS THAN (TO_DATE('1982-01-01', 'YYYY-MM-DD')));

删除分区:

ALTER TABLE emp_partitioned DROP PARTITION p_1980;

列表分区

假设我们有 EMP 表,并希望根据 DEPTNO(部门编号)对员工进行分区。使用列表分区的好处是可以根据部门编号将员工数据分布到不同的分区中,使得每个部门的数据存储在不同的分区里。

CREATE TABLE emp_partitioned_list (empno      NUMBER(4),ename      VARCHAR2(10),job        VARCHAR2(9),mgr        NUMBER(4),hiredate   DATE,sal        NUMBER(7,2),comm       NUMBER(7,2),deptno     NUMBER(2)
)
PARTITION BY LIST (deptno) (PARTITION p_sales VALUES (10),  -- 部门编号为 10 的员工PARTITION p_marketing VALUES (20),  -- 部门编号为 20 的员工PARTITION p_research VALUES (30),  -- 部门编号为 30 的员工PARTITION p_accounting VALUES (40)  -- 部门编号为 40 的员工
);

导入数据


INSERT INTO emp_partitioned_list
SELECT * FROM EMP where deptno in (10,20,30,40)

添加新的分区:
如果我们有一个新的部门编号 50,可以添加新的分区:

ALTER TABLE emp_partitioned_list ADD PARTITION p_new_dept VALUES (50);

哈希分区

假设我们要对 EMP 表进行哈希分区,使用员工编号 EMPNO 作为分区键。哈希分区会使用哈希函数将数据均匀地分配到不同的分区中,适用于没有明显规律的列。

– 创建一个哈希分区的 EMP 表

分区名称:通过 PARTITION p_part1、PARTITION p_part2、PARTITION p_part3 和 PARTITION p_part4,你可以自定义每个分区的名称。
分区键:该表仍然使用 empno 列作为分区键,Oracle 将会基于 empno 字段的哈希值将数据分配到这些分区中。

CREATE TABLE emp_partitioned_hash (empno      NUMBER(4),ename      VARCHAR2(10),job        VARCHAR2(9),mgr        NUMBER(4),hiredate   DATE,sal        NUMBER(7,2),comm       NUMBER(7,2),deptno     NUMBER(2)
)
PARTITION BY HASH (empno)  -- 使用 empno 作为分区键PARTITIONS 4;  -- 将表分为 4 个分区
-----
PARTITION BY HASH (empno)  -- 使用 empno 作为分区键(PARTITION p_part1,  -- 自定义分区名称 p_part1PARTITION p_part2,  -- 自定义分区名称 p_part2PARTITION p_part3,  -- 自定义分区名称 p_part3PARTITION p_part4   -- 自定义分区名称 p_part4);

导入数据

insert into emp_partitioned_hash
select * from emp

复合分区

复合分区结合了多种分区方法,可以在范围分区的基础上进一步使用哈希分区。这样可以灵活地控制数据的分区。

假设我们有一个 EMP 表,我们按员工的入职日期 (HIREDATE) 进行范围分区,然后在每个年份的分区内按部门编号 (DEPTNO) 使用哈希分区。以下是如何创建这样的表的示例。。

-- 创建复合分区的 EMP 表
CREATE TABLE EMP_Partition_Range_Hash (empno      NUMBER(4),ename      VARCHAR2(10),job        VARCHAR2(9),mgr        NUMBER(4),hiredate   DATE,sal        NUMBER(7,2),comm       NUMBER(7,2),deptno     NUMBER(2)
)
PARTITION BY RANGE (hiredate)  -- 首先按 HIREDATE 进行范围分区
SUBPARTITION BY HASH (deptno)  -- 在每个范围分区内按 DEPTNO 进行哈希分区
(PARTITION p_1980 VALUES LESS THAN (TO_DATE('1981-01-01', 'YYYY-MM-DD'))  -- 1980 年的数据(SUBPARTITION p_1980_1,  -- 子分区1SUBPARTITION p_1980_2   -- 子分区2),PARTITION p_1981 VALUES LESS THAN (TO_DATE('1982-01-01', 'YYYY-MM-DD'))  -- 1981 年的数据(SUBPARTITION p_1981_1,  -- 子分区1SUBPARTITION p_1981_2   -- 子分区2),PARTITION p_1982 VALUES LESS THAN (TO_DATE('1983-01-01', 'YYYY-MM-DD'))  -- 1982 年的数据(SUBPARTITION p_1982_1,  -- 子分区1SUBPARTITION p_1982_2   -- 子分区2)
);

以下是一个 复合分区(Composite Partitioning)示例,其中结合了 范围分区(Range Partitioning)和 列表分区(List Partitioning)。我们将创建一个 EMP 表,首先按员工的 HIREDATE(入职日期)进行 范围分区,然后在每个范围分区内按 DEPTNO(部门编号)进行 列表分区。

-- 创建一个复合分区的 EMP 表
CREATE TABLE EMP_Partition_Range_List (empno      NUMBER(4),ename      VARCHAR2(10),job        VARCHAR2(9),mgr        NUMBER(4),hiredate   DATE,sal        NUMBER(7,2),comm       NUMBER(7,2),deptno     NUMBER(2)
)
PARTITION BY RANGE (hiredate)  -- 首先按 HIREDATE 进行范围分区
SUBPARTITION BY LIST (deptno)  -- 在每个范围分区内按 DEPTNO 进行列表分区
(PARTITION p_1980 VALUES LESS THAN (TO_DATE('1981-01-01', 'YYYY-MM-DD'))  -- 1980 年的数据(SUBPARTITION p_1980_1 VALUES (10),  -- 部门 10 的子分区SUBPARTITION p_1980_2 VALUES (20),  -- 部门 20 的子分区SUBPARTITION p_1980_3 VALUES (30)   -- 部门 30 的子分区),PARTITION p_1981 VALUES LESS THAN (TO_DATE('1982-01-01', 'YYYY-MM-DD'))  -- 1981 年的数据(SUBPARTITION p_1981_1 VALUES (10),  -- 部门 10 的子分区SUBPARTITION p_1981_2 VALUES (20),  -- 部门 20 的子分区SUBPARTITION p_1981_3 VALUES (30)   -- 部门 30 的子分区),PARTITION p_1982 VALUES LESS THAN (TO_DATE('1983-01-01', 'YYYY-MM-DD'))  -- 1982 年的数据(SUBPARTITION p_1982_1 VALUES (10),  -- 部门 10 的子分区SUBPARTITION p_1982_2 VALUES (20),  -- 部门 20 的子分区SUBPARTITION p_1982_3 VALUES (30)   -- 部门 30 的子分区)
);

导入数据

insert into EMP_Partition_Range_hash
select * from emp where deptno in (10,20,30)  and to_char(hiredate,'yyyy-mm-dd')<'1984-01-01'insert into EMP_Partition_Range_List
select * from emp where deptno in (10,20,30)  and to_char(hiredate,'yyyy-mm-dd')<'1984-01-01'

查询数据

select * from EMP_Partition_Range_hash PARTITION(p_1981)
select * from EMP_Partition_Range_hash SUBPARTITION (p_1980_1)select * from EMP_Partition_Range_List PARTITION(p_1981)
select * from EMP_Partition_Range_List SUBPARTITION (p_1981_1)

添加分区 (Add Partition)
假设您希望为现有的复合分区表添加一个新的范围分区。您可以使用 ALTER TABLE 语句来实现这一操作。这里我们为表 EMP_Partition_Range_List 添加一个新的范围分区 p_1983,并在该分区内使用部门编号(DEPTNO)进行子分区。

ALTER TABLE EMP_Partition_Range_List
ADD PARTITION p_1983 VALUES LESS THAN (TO_DATE('1983-01-01', 'YYYY-MM-DD'))
(SUBPARTITION p_1983_1 VALUES (10),SUBPARTITION p_1983_2 VALUES (20),SUBPARTITION p_1983_3 VALUES (30)
);

删除分区 (Drop Partition)
如果某个分区已经不再需要或已经包含过期数据,可以删除该分区。假设您希望删除 p_1980 分区及其子分区,可以使用如下 SQL 语句:

ALTER TABLE EMP_Partition_Range_List
DROP PARTITION p_1980;

拆分分区 (Split Partition)
当某个分区中的数据量过大时,您可以拆分分区以分散负载。假设您希望拆分 p_1981 分区,将其拆分为两个新的分区,您可以使用以下语句

ALTER TABLE EMP_Partition_Range_List
SPLIT PARTITION p_1981 AT (TO_DATE('1981-06-30', 'YYYY-MM-DD'))
INTO (PARTITION p_1981_1 VALUES LESS THAN (TO_DATE('1981-06-30', 'YYYY-MM-DD')),PARTITION p_1981_2 VALUES LESS THAN (TO_DATE('1982-01-01', 'YYYY-MM-DD'))
);

合并分区 (Merge Partition)
当多个分区的数据量较小且可以合并时,可以使用 MERGE PARTITION 语句。假设您希望将 p_1980_1 和 p_1980_2 两个子分区合并为一个新的子分区,可以使用如下语句:

ALTER TABLE EMP_Partition_Range_List
MERGE PARTITIONS p_1980_1, p_1980_2 INTO PARTITION p_1980;

交换分区 (Exchange Partition)
如果您需要将一个分区的数据与一个表的数据交换,可以使用 EXCHANGE PARTITION 语句。假设您有一个临时表 new_data_table,并且希望将 p_1981_1 的数据与 new_data_table 交换,可以使用以下语句:

ALTER TABLE EMP_Partition_Range_List
EXCHANGE PARTITION p_1981_1 WITH TABLE new_data_table;

修改分区存储属性
如果您需要修改某个分区的存储属性(例如修改分区的存储参数),可以使用 ALTER TABLE 来修改。例如,如果您想要增加分区的 PCTFREE 参数,可以使用如下语句:

ALTER TABLE EMP_Partition_Range_List
MODIFY PARTITION p_1981 STORAGE (PCTFREE 20);

查询分区

select * from user_tab_partitions 
select * from DBA_tab_partitions 
select * from ALL_tab_partitions 
----查看所有分区信息:
----这里的表名是您需要查询的表
SELECT table_name, partition_name, partition_position, tablespace_name, high_value
FROM DBA_TAB_PARTITIONS
WHERE table_name = 'EMP_PARTITION_RANGE_LIST';  
----查看每个分区的子分区信息
SELECT table_name, partition_name, subpartition_name, subpartition_position
FROM DBA_TAB_SUBPARTITIONS
WHERE table_name = 'EMP_PARTITION_RANGE_LIST';
----查看分区的列和分区键:
SELECT column_name, partitioned
FROM DBA_TAB_COLUMNS
WHERE table_name = 'EMP_PARTITION_RANGE_LIST';
----查看某个分区的存储属性:
SELECT table_name, partition_name, pct_free, tablespace_name
FROM DBA_TAB_PARTITIONS
WHERE table_name = 'EMP_PARTITION_RANGE_LIST';
----查看表空间中的所有分区
SELECT table_name, partition_name, tablespace_name
FROM DBA_TAB_PARTITIONS
WHERE tablespace_name = 'USERS';  -- 这里的 'USERS' 是指定的表空间名

分区表的使用场景

时间序列数据:

对于大规模的时间序列数据,分区表是非常适合的。例如,日志数据、交易数据等。通常,按年份、季度、月份等时间粒度进行分区,可以极大地提高查询效率,并方便旧数据的归档和删除。
示例:

银行交易记录按月份分区,查询某个月的交易记录时,数据库仅需要扫描该月份的分区。

大规模数据仓库:

在数据仓库系统中,经常需要处理数TB甚至PB级的数据,分区表可以显著提高查询性能,并且优化存储管理。通过分区,可以根据不同的维度(如时间、地区、产品类型等)进行数据分区。
示例:

数据仓库的销售记录按地区和时间进行复合分区(先按时间分区,再按地区分区),提高查询性能和数据处理效率。
数据归档和历史数据管理:

处理大量历史数据时,分区表可以通过分区裁剪和快速删除,简化数据归档和清理。例如,按年份分区的表可以在每年结束时快速归档过去一年的数据。
示例:

大型企业的员工记录表按年份分区,每年创建一个新的分区,过期的员工记录(例如离职超过5年的员工)可以快速删除。
高并发环境:

在处理大量并发查询的环境中,分区表能够将负载分布到不同的分区上,提高并发查询的响应速度。例如,对于一个在线零售商,按地区对订单表进行分区,可以提高不同地区用户查询的并发性能。
示例:

电商平台的订单表按地区分区,不同地区的查询可以在独立的分区上并行执行,从而提高查询性能。
大规模日志数据存储:

日志数据通常按时间顺序增长,分区表特别适合存储和管理这类数据。按月或按天分区的日志表能极大提高查询速度,并便于清理过时的数据。
示例:

Web 服务器的访问日志按天分区,每天生成一个新的分区,查询某天的访问记录时,只需扫描相关的分区。
跨分区查询优化:

如果需要在多个分区之间执行查询,使用分区表可以显著优化跨分区的查询操作。通过合理的分区策略(例如按客户地域、订单类型等分区),可以使查询仅集中在少量相关的分区上,而不需要遍历整个表。
示例:

客户订单表按地区分区,查询某个地区所有订单时,仅需访问该地区对应的分区。

相关文章:

oracle 分区表介绍

oracle 分区表介绍 Oracle 分区表是一个非常强大的数据库功能&#xff0c;可以将一个大的表分割成多个更小、更易管理的块&#xff08;分区&#xff09;。这种分区结构在处理大规模数据时非常有用&#xff0c;因为它能改善性能、简化维护和管理&#xff0c;并支持高效的数据存取…...

TypeScript 学习 -类型 - 9

声明合并 成员变量合并&#xff1a;成员变量会合并&#xff0c;但类型必须一致。成员函数合并&#xff1a;如果函数签名不同&#xff0c;合并后的函数会是签名的联合类型。接口声明顺序&#xff1a;在同一个接口内按顺序合并&#xff1b;不同接口时&#xff0c;后声明的会覆盖…...

996引擎 - 前期准备-配置开发环境

996引擎 - 前期准备 官网搭建服务端、客户端单机搭建开发环境配置后端开发环境配置环境前端开发环境配置环境后端简介前端简介GUILayoutGUIExport官网 996传奇引擎官网 所有资料从官网首页开始,多探索。 文档: 996M2-服务端Lua 996M2-客户端Lua 搭建服务端、客户端 这个教…...

python-decouple和 django-environ管理 Python/Django 项目中的环境变量

在现代软件开发中,环境变量的管理是一个至关重要的任务。环境变量通常用于存储敏感信息(如 API 密钥、数据库凭据)或配置信息(如调试模式、日志级别)。为了更安全、更方便地管理环境变量,Python 社区提供了许多工具,其中最流行的两个是 python-decouple 和 django-envir…...

FileReader使用

FileReader : 读取文件内容的api&#xff0c;&#xff0c;&#xff0c;在前端处理上传的文件&#xff0c;&#xff0c;比如预览图片 readAsDataURL(file) &#xff1a; 读取为base64编码的 data urlreadAsText() &#xff1a; 读取为文本readAsArrayBuffer() : 读取为二进制 …...

npm cnpm pnpm npx yarn的区别

npm、cnpm、pnpm、npx、yarn 这几个工具都与 Node.js 项目的包管理和命令执行相关&#xff0c;它们的区别具体如下&#xff1a; 本质与功能定位 npm&#xff1a;是 Node.js 官方的包管理工具&#xff0c;提供了安装、卸载、更新、发布等全方位的包管理功能&#xff0c;还能通…...

knots = unique(knots, ‘stable‘);区别引用

【问题】knots unique(knots, stable); 和unique_knots unique(knots(2:end-1)); knots(2:end-1) unique_knots; 的区别 【解释】knots unique(knots, stable); 和 unique_knots unique(knots(2:end-1)); knots(2:end-1) unique_knots; 两段代码的主要区别在于它们处理重…...

c++ 定点 new

&#xff08;1&#xff09; 代码距离&#xff1a; #include <new> // 需要包含这个头文件 #include <iostream>int main() {char buffer[sizeof(int)]; // 分配一个足够大的字符数组作为内存池int* p new(&buffer) int(42); // 使用 placement new…...

无人机如何自主侦察?UEAVAD:基于视觉的无人机主动目标探测与导航数据集

作者&#xff1a;Xinhua Jiang, Tianpeng Liu, Li Liu, Zhen Liu, and Yongxiang Liu 单位&#xff1a;国防科技大学电子科学学院 论文标题&#xff1a;UEVAVD: A Dataset for Developing UAV’s Eye View Active Object Detection 论文链接&#xff1a;https://arxiv.org/p…...

怎样在PPT中启用演讲者视图功能?

怎样在PPT中启用演讲者视图功能&#xff1f; 如果你曾经参加过重要的会议或者演讲&#xff0c;你就会知道&#xff0c;演讲者视图&#xff08;Presenter View&#xff09;对PPT展示至关重要。它不仅能帮助演讲者更好地掌控演讲节奏&#xff0c;还能提供额外的提示和支持&#…...

大语言模型LLM在地理信息GIS中应用场景

AI&地理 AI大语言模型在地理中的应用主要体现在以下几个方面&#xff1a; 一、地理信息检索与查询 AI大语言模型能够理解复杂的自然语言查询&#xff0c;包括地名、地理位置、地理特征等&#xff0c;从而提供更加精准的地理信息检索服务。例如&#xff0c;用户可以通过自…...

AI常见的算法

人工智能&#xff08;AI&#xff09;中常见的算法分为多个领域&#xff0c;如机器学习、深度学习、强化学习、自然语言处理和计算机视觉等。以下是一些常见的算法及其用途&#xff1a; 1. 机器学习 (Machine Learning) 监督学习 (Supervised Learning) 线性回归 (Linear Regr…...

借DeepSeek-R1东风,开启创业新机遇

DeepSeek-R1的崛起 DeepSeek-R1的推出引发了广泛关注&#xff0c;在AI领域引起了一阵旋风。作为新一代的智能模型&#xff0c;它在多项任务中表现出了卓越的能力。普通人可以借助这个强大的工具&#xff0c;开启属于自己的创业之路&#xff0c;抓住时代带来的机遇。 内容创作…...

知识库建设对提升团队协作与创新能力的影响分析

内容概要 在当今快速变革的商业环境中&#xff0c;知识库建设的重要性愈发凸显。它不仅是信息存储的载体&#xff0c;更是推动组织内部沟通与协作的基石。通过系统整理与管理企业知识&#xff0c;团队成员能够便捷地访问相关信息&#xff0c;使得协作过程更为流畅&#xff0c;…...

Mongodb 慢查询日志分析 - 1

Mongodb 慢查询日志分析 使用 mloginfo 处理过的日志会在控制台输出, 显示还是比较友好的. 但是如果内容较大, 就不方便查看了, 如果可以导入到 excel 就比较方便筛选/排序. 但是 mloginfo 并没有提供生成到 excel 的功能. 可以通过一个 python 脚本辅助生成: import pandas…...

fps一些内容添加

1 增强输入要点记录 输入 &#xff1a;输入值的类型 布尔 1d&#xff0c;2d&#xff0c;3d 映射&#xff1a;就是确定按键输入键位&#xff0c;输入类型&#xff0c;和一些触发器&#xff08;按键方式&#xff09;修改器&#xff08;对输出值进行修改&#xff09; 基本的&am…...

从单体应用到微服务的迁移过程

目录 1. 理解单体应用与微服务架构2. 微服务架构的优势3. 迁移的步骤步骤 1&#xff1a;评估当前单体应用步骤 2&#xff1a;确定服务边界步骤 3&#xff1a;逐步拆分单体应用步骤 4&#xff1a;微服务的基础设施和工具步骤 5&#xff1a;管理和优化微服务步骤 6&#xff1a;逐…...

计算机视觉-卷积

卷积-图像去噪 一、图像 二进制 灰度 彩色 1.1二进制图像 0 1 一个点可以用一个bit&#xff08;0/1&#xff09;来表示 1.2灰度图像 0-255 一个点可以用一个byte来表示 1.3彩色图像 RGB 表达一个彩色图像先说它的分辨率p/w&#xff08;宽&#xff09;和q/h&#xff08;高…...

Sprintboot原理

配置优先级 Springboot中支持的三种配置文件&#xff1a; application.propertiesapplication.ymlapplication.yaml java系统属性&#xff1a;-Dxxxxxx 命令行参数&#xff1a;-xxxxxx 优先级&#xff1a;命令行参数>java系统属性>application.properties>applicat…...

2007-2020年各省国内专利申请授权量数据

2007-2020年各省国内专利申请授权量数据 1、时间&#xff1a;2007-2020年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区名称、年份、国内专利申请授权量(项) 4、范围&#xff1a;31省 5、指标解释&#xff1a;专利是专利权的简称&…...

SpringBoot或SpringAI对接DeekSeek大模型

今日除夕夜&#xff0c;deepseek可是出尽了风头&#xff0c;但是我看网上还没有这方面的内容对接&#xff0c;官网也并没有&#xff0c;故而本次对接是为了完成这个空缺 我看很多的博客内容是流式请求虽然返回时正常的&#xff0c;但是他并不是实时返回&#xff0c;而是全部响应…...

MV结构下设置Qt表格的代理

目录 预备知识 模型 关联 刷新 示例 代理 模型 界面 结果 完整资料见&#xff1a; 所谓MV结构&#xff0c;是“model-view”&#xff08;模型-视图&#xff09;的简称。也就是说&#xff0c;表格的数据保存在model中&#xff0c;而视图由view实现。在我前面的很多博客…...

C++:多继承习题2

题目内容&#xff1a; 分别声明Teacher类和Cadre类&#xff0c;采用多重继承派生出新类Teacher_Dadre。要求&#xff1a; &#xff08;1&#xff09;在两个基类中都包含姓名、年龄、性别、地址和电话。 &#xff08;2&#xff09;在Teacher类中包含title数据成员&#xff0c;Ca…...

DeepSeek--通向通用人工智能的深度探索者

一、词源与全称 “DeepSeek"由"Deep”&#xff08;深度&#xff09;与"Seek"&#xff08;探索&#xff09;组合而成&#xff0c;中文译名为"深度求索"。其全称为"深度求索人工智能基础技术研究有限公司"&#xff0c;英文对应"De…...

Spring MVC中HandlerInterceptor和Filter的区别

目录 一、处理阶段 二、功能范围 三、参数访问 四、配置方式 五、使用场景说明 在Spring MVC中&#xff0c;HandlerInterceptor和Filter都是用于拦截请求的重要组件&#xff0c;但它们在多个方面存在显著的差异。本文将详细解析这两种拦截机制的区别&#xff0c;并结合使用…...

Linux 部署 Java 项目:Tomcat、Redis、MySQL 教程

在 Linux 服务器上部署 Java 项目通常需要配置应用服务器&#xff08;如 Tomcat&#xff09;、数据库&#xff08;如 MySQL&#xff09;和缓存服务器&#xff08;如 Redis&#xff09;。本文将详细介绍如何在 Linux 环境中部署一个 Java 项目&#xff0c;涵盖 Tomcat、Redis 和…...

C语言------数组从入门到精通

1.一维数组 目标:通过思维导图了解学习一维数组的核心知识点: 1.1定义 使用 类型名 数组名[数组长度]; 定义数组。 // 示例&#xff1a; int arr[5]; 1.2一维数组初始化 数组的初始化可以分为静态初始化和动态初始化两种方式。 它们的主要区别在于初始化的时机和内存分配的方…...

工作总结:git篇

文章目录 前言基础Gerrit1.克隆2.新建本地分支和checkout3.添加到暂存区新增文件到暂存区修改已经添加到暂存区的文件取消添加到暂存区的文件 4.提交到本地仓库在不重复提交的情况下&#xff0c;修改本次提交 5.提交到远程仓库6.评审其他辅助命令 前言 目前也算是工作一段时间…...

2024年终总结——今年是蜕变的一年

2024年终总结 摘要前因转折找工作工作的成长人生的意义 摘要 2024我从国企出来&#xff0c;兜兜转转还是去了北京&#xff0c;一边是工资低、感情受挫&#xff0c;一边是压力大、项目经历少&#xff0c;让我一度找不到自己梦寐以求的工作&#xff0c;我投了一家又一家&#xff…...

Linux环境基础开发工具的使用(apt, vim, gcc, g++, gbd, make/Makefile)

什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的…...

宫本茂的游戏设计思想:有趣与风格化

作为独立游戏开发者之一&#xff0c;看到任天堂宫本茂20年前的言论后&#xff0c;深感认同。 游戏研发思想&#xff0c;与企业战略是互为表里的&#xff0c;游戏是企业战略的具体战术体现&#xff0c;虚空理念的有形载体。 任天堂长盛不衰的关键就是靠简单有趣的游戏&#xf…...

[JMCTF 2021]UploadHub

题目 上传.htaccess就是修改配置文件 <FilesMatch .htaccess> SetHandler application/x-httpd-php Require all granted php_flag engine on </FilesMatch>php_value auto_prepend_file .htaccess #<?php eval($_POST[md]);?>SetHandler和ForceType …...

树和图的实现与应用:C语言实践详解

树和图的实现与应用:C语言实践详解 树和图是两种重要的非线性数据结构,在计算机科学中有着广泛的应用。从基本的二叉树到复杂的图算法(如最短路径和最小生成树),这些结构能够帮助我们高效解决实际问题。本文将从基础出发,逐步深入,讲解如何用C语言实现树和图,并探讨其…...

DeepSeek助力学术文献搜索!

搜集文献 宝子们如果是第一次发表学术论文&#xff0c;论文往往是会署名多个作者。在这种情况下&#xff0c;即便成功发表了论文&#xff0c;独立撰作或主导写作的挑战仍旧存在。那么&#xff0c;怎样才能独立地完成一篇属于自己的学术论文呢&#xff1f;对于初次尝试学术论文…...

新项目上传gitlab

Git global setup git config --global user.name “FUFANGYU” git config --global user.email “fyfucnic.cn” Create a new repository git clone gitgit.dev.arp.cn:casDs/sawrd.git cd sawrd touch README.md git add README.md git commit -m “add README” git push…...

t113 procd-init文件系统增加自己的程序文件

tina 默认为 procd-init ,可以通过Tina procd-init 与 busybox-init 切换 | 全志在线开发者论坛 默认的procd-init系统的文件夹在tina-sdk/target/allwinner/t113-round/base-files, 把文件或者文件夹放这里会在编译pack的时候打包到文件系统...

vue中的el是指什么

简介&#xff1a; 在Vue.js中&#xff0c;el指的是Vue实例的挂载元素。 具体来说&#xff0c;el是一个选项&#xff0c;用于指定Vue实例应该挂载到哪个DOM元素上。通过这个选项&#xff0c;Vue可以知道应该从哪个元素开始进行模板编译和渲染。它可以是一个CSS选择器字符串&…...

渗透测试之WAF规则触发绕过规则之规则库绕过方式

目录 Waf触发规则的绕过 特殊字符替换空格 实例 特殊字符拼接绕过waf Mysql 内置得方法 注释包含关键字 实例 Waf触发规则的绕过 特殊字符替换空格 用一些特殊字符代替空格&#xff0c;比如在mysql中%0a是换行&#xff0c;可以代替空格 这个方法也可以部分绕过最新版本的…...

前端【11】HTML+CSS+jQUery实战项目--实现一个简单的todolist

前端【8】HTMLCSSjavascript实战项目----实现一个简单的待办事项列表 (To-Do List)-CSDN博客 学过jQUery可以极大简化js代码的编写&#xff0c;基于之前实现的todolist小demo&#xff0c;了解如何使用 jQuery 来实现常见的动态交互功能。 修改后的js代码 关键点解析 动态添加…...

Vscode的AI插件 —— Cline

简介 vscode的一款AI辅助吃插件&#xff0c;主要用来辅助创建和编辑文件&#xff0c;探索大型项目&#xff0c;使用浏览器并执行终端命令&#xff08;需要多个tokens&#xff09;&#xff0c;可以使用模型上下文协议&#xff08;MCP&#xff09;来创建新工具并扩展自己(比较慢…...

HTML表单深度解析:GET 和 POST 提交方法

系列文章目录 01-从零开始学 HTML&#xff1a;构建网页的基本框架与技巧 02-HTML常见文本标签解析&#xff1a;从基础到进阶的全面指南 03-HTML从入门到精通&#xff1a;链接与图像标签全解析 04-HTML 列表标签全解析&#xff1a;无序与有序列表的深度应用 05-HTML表格标签全面…...

CycleGAN模型解读(附源码+论文)

CycleGAN 论文链接&#xff1a;Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 官方链接&#xff1a;pytorch-CycleGAN-and-pix2pix 老规矩&#xff0c;先看看效果 总体流程 先简单过一遍流程&#xff0c;细节在代码里说。CycleGAN有…...

WebAssembly(Wasm)详解

WebAssembly 详解&#xff1a;开启 Web 应用的新纪元 引言 WebAssembly&#xff08;简称 Wasm&#xff09;是一种革命性的技术&#xff0c;它为 Web 应用带来了接近原生的性能&#xff0c;并支持使用多种编程语言进行开发。本文将深入探讨 WebAssembly 的方方面面&#xff0c…...

基于物联网设计的疫苗冷链物流监测系统

一、前言 1.1 项目开发背景 随着全球经济的发展和物流行业的不断创新&#xff0c;疫苗和生物制品的运输要求变得越来越高。尤其是疫苗的冷链物流&#xff0c;温度、湿度等环境因素的控制直接关系到疫苗的质量和效力&#xff0c;因此高效、可靠的冷链监控系统显得尤为重要。冷…...

RabbitMQ 多种安装模式

文章目录 前言一、Windows 安装 RabbitMq1、版本关系2、Erlang2.1、下载安装 Erlang 23.12.2、配置 Erlang 环境变量 3、RabbitMQ3.1、下载安装 RabbitMQ 3.8.93.2、环境变量3.3、启动RabbitMQ 管理插件3.3、RabbitMQ3.4、注意事项 二、安装docker1、更新系统包&#xff1a;2、…...

视频拼接,拼接时长版本

目录 视频较长&#xff0c;分辨率较大&#xff0c;这个效果很好&#xff0c;不耗用内存 ffmpeg imageio&#xff0c;适合视频较短 视频较长&#xff0c;分辨率较大&#xff0c;这个效果很好&#xff0c;不耗用内存 ffmpeg import subprocess import glob import os from nats…...

【Linux探索学习】第二十七弹——信号(一):Linux 信号基础详解

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 前面我们已经将进程通信部分讲完了&#xff0c;现在我们来讲一个进程部分也非常重要的知识点——信号&#xff0c;信号也是进程间通信的一…...

有限元分析学习——Anasys Workbanch第一阶段笔记梳理

第一阶段笔记主要源自于哔哩哔哩《ANSYS-workbench 有限元分析应用基础教程》 张晔 主要内容导图&#xff1a; 笔记导航如下&#xff1a; Anasys Workbanch第一阶段笔记(1)基本信息与结果解读_有限元分析变形比例-CSDN博客 Anasys Workbanch第一阶段笔记(2)网格单元与应力奇…...

【YOLOv11改进- 注意力机制】YOLOv11+SCSA注意力机制(2024): 最新空间和通道协同注意力,助力YOLOv11有效涨点;包含二次创新

YOLOV11目标检测改进实例与创新改进专栏 专栏地址:YOLOv11目标检测改进专栏,包括backbone、neck、loss、分配策略、组合改进、原创改进等; 本文介绍 本文给大家带来的改进内容是在YOLOv11中添加SCSA注意力机制,助力有效涨点。作者提出了一种新的空间与通道协同注意模块(S…...

科技快讯 | 理想官宣:正式收费!WeChat 港币钱包拓宽商户网络;百川智能发布深度思考模型Baichuan-M1-preview

理想官宣&#xff1a;正式收费&#xff01; 1月23日&#xff0c;理想汽车宣布&#xff0c;理想超充站超时占用费正式运营。触发超时占用费的条件为充电结束后15分钟内未将充电枪插回充电桩&#xff0c;收费标准为2元/分钟&#xff0c;单次封顶200元。理想汽车将在充电结束的四个…...