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…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
