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

wxwidgets直接获取系统图标,效果类似QFileIconProvider
目前只做了windows版本,用法类似QFileIconProvider // 头文件 #ifndef WXFILEICONPROVIDER_H #define WXFILEICONPROVIDER_H#include <wx/wx.h> #include <wx/icon.h> #include <wx/image.h> #include <wx/bmpcbox.h> // Include for wxB…...

Arduino大师练成手册 -- 控制 PN532 NFC 模块
要在 Arduino 上控制 PN532 NFC 模块,你可以按照以下步骤进行: 硬件连接 VCC:连接到 Arduino 的 3.3V 引脚。 GND:连接到 Arduino 的 GND 引脚。 SDA:连接到 Arduino 的 SDA 引脚(通常是 A4)…...
解决日志中 `NOT NULL constraint failed` 异常的完整指南
在开发和运维过程中,日志是我们排查问题的重要工具。然而,当日志中出现类似 NOT NULL constraint failed 的异常时,往往意味着数据库约束与代码逻辑不匹配。本文将详细分析此类问题的原因,并提供完整的解决方案。 © ivwdcwso (ID: u012172506) 问题描述 在同步 AWS …...

C动态库的生成与在Python和QT中的调用方法
目录 一、动态库生成 1)C语言生成动态库 2)c类生成动态库 二、动态库调用 1)Python调用DLL 2)QT调用DLL 三、存在的一些问题 1)python调用封装了类的DLL可能调用不成功 2)DLL格式不匹配的问题 四、…...

UE求职Demo开发日志#7 强化属性完善
1 实现思路设计 定义一个结构体记录技能树一个单元的信息,命名为FStrengthenCellInfo,一个TArray记录技能树整体信息,需要以下信息: 1.TArray前置技能index 2.FString 描述文本 3.TArray<FMyItemInfo>激活需要的物品ID和…...
Day35:字符串的大小写转换
在 Python 中,字符串的大小写转换是一个常见的操作,它可以帮助我们快速地将字符串中的字母从大写转换为小写,或者从小写转换为大写。Python 提供了多种方法来进行字符串大小写的转换,包括 upper()、lower()、capitalize()、title(…...

喜报丨迪捷软件入选2025年浙江省“重点省专”
根据《浙江省经济和信息化厅 浙江省财政厅关于进一步支持专精特新中小企业高质量发展的通知》(浙经信企业〔2024〕232号)有关要求,经企业自主申报、地方推荐、材料初审以及专家评审等程序,浙江省经济和信息化厅发布了2025年浙江省…...
深度剖析 PyTorch框架:从基础概念到高级应用的深度学习之旅!
目录 一、引言 二、PyTorch 简介 (一)诞生背景与发展历程 (二)核心特点 三、PyTorch 基础概念 (一)张量(Tensor):数据的基石 (二)自动微分&…...

基于C++的DPU医疗领域编程初探
一、大型医院数据处理困境与 DPU 的崛起 在数字化浪潮的席卷下,医疗行业正经历着深刻变革,大型医院作为医疗服务的核心枢纽,积累了海量的数据,涵盖患者的基本信息、诊断记录、检验报告、影像资料等多个维度。这些数据不仅规模庞大,而且增长速度迅猛,传统的中央处理器(C…...
Linux 执行 fdisk -l 出现 GPT PMBR 大小不符 解决方法
目录 前言1. 问题所示2. 原理分析3. 解决方法前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. 问题所示 执行fdisk -l的时候出现如下提示: [root@VMS-Centos-test1 ~]# fdisk -l GPT PMBR 大小不符(419430399 != 4294967295),将用写入予以更正…...

图漾相机搭配VisionPro使用简易教程
1.下载并安装VisionPro软件 请自行下载VisonPro软件。 VisionPro 9.0 /9.5/9.6版本经测试,可正常打开图漾相机,建议使用图漾测试过的版本。 2.下载PercipioCameraForVisionPro软件包 使用浏览器下载:https://gitee.com/percipioxyz/camport…...

第一届“启航杯”网络安全挑战赛WP
misc PvzHE 去这个文件夹 有一张图片 QHCTF{300cef31-68d9-4b72-b49d-a7802da481a5} QHCTF For Year 2025 攻防世界有一样的 080714212829302316092230 对应Q 以此类推 QHCTF{FUN} 请找出拍摄地所在位置 柳城 顺丰 forensics win01 这个软件 云沙盒分析一下 md5 ad4…...
大模型训练策略与架构优化实践指南
标题:大模型训练策略与架构优化实践指南 文章信息摘要: 该分析全面探讨了大语言模型训练、架构选择、部署维护等关键环节的优化策略。在训练方面,强调了pre-training、mid-training和post-training的不同定位与目标;在架构选择上…...

新电脑安装系统找不到硬盘原因和解决方法来了
有不少网友反馈新电脑采用官方u盘方式装win10或win100出现找不到硬盘是怎么回事?后来研究半天发现是bios中开启了rst(vmd)模式。如果关闭rst模式肯定是可以安装的,但这会影响硬盘性能,有没有办法解决开启rst模式的情况安装win10或win11呢&…...

【Linux】21.基础IO(3)
文章目录 3. 动态库和静态库3.1 静态库与动态库3.2 静态库的制作和使用原理3.3 动态库的制作和使用原理3.3.1 动态库是怎么被加载的 3.4 关于地址 3. 动态库和静态库 3.1 静态库与动态库 静态库(.a):程序在编译链接的时候把库的代码链接到可…...
深度学习算法:从基础到实践
简介 深度学习作为人工智能领域的一个重要分支,近年来在多个领域取得了显著的成就。本文将从基础概念出发,探讨深度学习算法的核心原理,并介绍一些实际应用案例。 深度学习算法的核心概念 深度学习算法基于人工神经网络,通过构…...
27. 【.NET 8 实战--孢子记账--从单体到微服务】--简易报表--报表服务
报表是每个记账应用所具备的功能,要实现报表功能就需要把账本的核心功能(记账)完成,因此报表服务作为本专栏第一部分单体应用开发中最后一个要实现的功能,这一篇文章很简单,我们一起来实现一个简单的报表服…...

coffee销售数据集分析:基于时间趋势分析的实操练习
**文章说明:**对coffee销售数据集的简单分析练习(时间趋势分析练习),主要是为了强化利用python进行数据分析的实操能力。属于个人的练习文章。 **注:**这是我第一次使用md格式编辑博客文章,排版上还是不是很…...

【转帖】eclipse-24-09版本后,怎么还原原来版本的搜索功能
【1】原贴地址:eclipse - 怎么还原原来版本的搜索功能_eclipse打开类型搜索类功能失效-CSDN博客 https://blog.csdn.net/sinat_32238399/article/details/145113105 【2】原文如下: 更新eclipse-24-09版本后之后,新的搜索功能(CT…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...