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 分区表是一个非常强大的数据库功能,可以将一个大的表分割成多个更小、更易管理的块(分区)。这种分区结构在处理大规模数据时非常有用,因为它能改善性能、简化维护和管理,并支持高效的数据存取…...
在线可编辑Excel
1. Handsontable 特点: 提供了类似 Excel 的表格编辑体验,包括单元格样式、公式计算、数据验证等功能。 支持多种插件,如筛选、排序、合并单元格等。 轻量级且易于集成到现有项目中。 具备强大的自定义能力,可以调整外观和行为…...
基于 Node.js 的天气查询系统实现(附源码)
项目概述 这是一个基于 Node.js 的全栈应用,前端使用原生 JavaScript 和 CSS,后端使用 Express 框架,通过调用第三方天气 API 实现天气数据的获取和展示。 主要功能 默认显示多个主要城市的天气信息 支持城市天气搜索 响应式布局设计 深色主题界面 优雅的加载动画 技术栈 …...
【javaweb项目idea版】蛋糕商城(可复用成其他商城项目)
该项目虽然是蛋糕商城项目,但是可以复用成其他商城项目或者购物车项目 想要源码的uu可点赞后私聊 技术栈 主要为:javawebservletmvcc3p0idea运行 功能模块 主要分为用户模块和后台管理员模块 具有商城购物的完整功能 基础模块 登录注册个人信息编辑…...
langchain基础(三)
Chain: 关于三个invoke: 提示模板、聊天模型和输出解析器都实现了langchain的runnable接口, 都具有invoke方法(因为invoke方法是Runnable的通用调用方法) 所以可以一次性调用多次invoke直接得到最终结果:…...
在Ubuntu上用Llama Factory命令行微调Qwen2.5的简单过程
半年多之前写过一个教程:在Windows上用Llama Factory微调Llama 3的基本操作_llama-factory windows-CSDN博客 如果用命令行做的话,前面的步骤可以参考上面这个博客。安装好环境后, 用自我认知数据集微调Lora模块:data/identity.j…...
go 循环处理无限极数据
数据表结构: CREATE TABLE permission (id int(11) NOT NULL AUTO_INCREMENT COMMENT 权限ID,permission_name varchar(255) DEFAULT NULL COMMENT 权限名称,permission_url varchar(255) DEFAULT NULL COMMENT 权限路由,status tinyint(1) DEFAULT NULL COMMENT 权…...
Kafka 深入服务端 — 时间轮
Kafka中存在大量的延迟操作,比如延时生产、延时拉取和延时删除等。Kafka基于时间轮概念自定义实现了一个用于延时功能的定时器,来完成这些延迟操作。 1 时间轮 Kafka没有使用基于JDK自带的Timer或DelayQueue来实现延迟功能,因为它们的插入和…...
一文掌握ADB的安装及使用
文章目录 一、什么是ADB?二、 安装ADB2.1 下载ADB2.2 配置环境变量 三、连接Android设备四、 常用ADB命令五、ADB高级功能5.1 屏幕截图和录制5.2 模拟按键输入5.3 文件管理5.4 系统设置管理5.5 系统操作指令5.6 日志操作指令5.7 APK操作指令5.8 设备重启和恢复 六、…...
Linux系统下速通stm32的clion开发环境配置
陆陆续续搞这个已经很久了。 因为自己新电脑是linux系统无法使用keil,一开始想使用vscode里的eide但感觉不太好用;后面想直接使用cudeide但又不想妥协,想趁着这个机会把linux上的其他单片机开发配置也搞明白;而且非常想搞懂cmake…...
Java 9模块开发:IntelliJ IDEA实战指南
在Java 9中,模块化是一个重要的特性,它可以帮助我们更好地组织和管理代码。而IntelliJ IDEA作为一个强大的集成开发环境,为Java 9模块的开发提供了全面的支持。本文将通过一个实际的项目示例,详细讲解如何在IntelliJ IDEA中开发和…...
OpenCSG月度更新2025.1
1月的OpenCSG取得了一些亮眼的成绩 在2025年1月,OpenCSG在产品和社区方面继续取得了显著进展。产品方面,推出了AutoHub浏览器自动化助手,帮助用户提升浏览体验;CSGHub企业版功能全面升级,现已开放试用申请,…...
【算法与数据结构】动态规划
目录 基本概念 最长递增子序列(中等) 最大子数组和(中等) 基本概念 重叠子问题 一个问题可以被分解为多个子问题,并且这些子问题在求解过程中会被多次重复计算。例如,在计算斐波那契数列时,…...
AWTK 骨骼动画控件发布
Spine 是一款广泛使用的 2D 骨骼动画工具,专为游戏开发和动态图形设计设计。它通过基于骨骼的动画系统,帮助开发者创建流畅、高效的角色动画。本项目是基于 Spine 实现的 AWTK 骨骼动画控件。 代码:https://gitee.com/zlgopen/awtk-widget-s…...
【llm对话系统】什么是 LLM?大语言模型新手入门指南
什么是 LLM?大语言模型新手入门指南 大家好!欢迎来到 LLM 的奇妙世界!如果你对人工智能 (AI) 的最新进展,特别是那些能像人类一样阅读、写作甚至进行对话的 AI 感兴趣,那么你来对地方了。这篇文章将带你认识 LLM 的基…...
三角形的最大周长(LeetCode 976)
给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回 0。 示例 1: 输入:[2,1,2] 输出:5 示例 2&…...
go到底是什么意思:对go的猜测或断言
go这个单词,简单地讲,表示“走或去”的意思: go v.去;走 认真想想,go是一个非常神秘的单词,g-和o-这两个字母,为什么就会表达“去;走”的意思呢?它的字面义或本质&…...
学习数据结构(2)空间复杂度+顺序表
1.空间复杂度 (1)概念 空间复杂度也是一个数学表达式,表示一个算法在运行过程中根据算法的需要额外临时开辟的空间。 空间复杂度不是指程序占用了多少bytes的空间,因为常规情况每个对象大小差异不会很大,所以空间复杂…...
DeepSeek--通向通用人工智能的深度探索者
一、词源与全称 “DeepSeek"由"Deep”(深度)与"Seek"(探索)组合而成,中文译名为"深度求索"。其全称为"深度求索人工智能基础技术研究有限公司",英文对应"De…...
Unity游戏(Assault空对地打击)开发(1) 创建项目和选择插件
目录 前言 创建项目 插件导入 地形插件 前言 这是游戏开发第一篇,进行开发准备。 创作不易,欢迎支持。 我的编辑器布局是【Tall】,建议调整为该布局,如下。 创建项目 首先创建一个项目,过程略,名字请勿…...
(三)Session和Cookie讲解
目录 一、前备知识点 (1)静态网页 (2)动态网页 (3)无状态HTTP 二、Session和Cookie 三、Session 四、Cookie (1)维持过程 (2)结构 正式开始说 Sessi…...
【信息系统项目管理师-选择真题】2011下半年综合知识答案和详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9~10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第21题】…...
1.Template Method 模式
模式定义 定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method 使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特…...
【PyTorch】5.张量索引操作
目录 1. 简单行、列索引 2. 列表索引 3. 范围索引 4. 布尔索引 5. 多维索引 个人主页:Icomi 在深度学习蓬勃发展的当下,PyTorch 是不可或缺的工具。它作为强大的深度学习框架,为构建和训练神经网络提供了高效且灵活的平台。神经网络作为…...
力扣25.k个一组翻转链表
给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值&…...
[EAI-023] FAST: Efficient Action Tokenization for Vision-Language-Action Models
Paper Card 论文标题:FAST: Efficient Action Tokenization for Vision-Language-Action Models 论文作者:Karl Pertsch, Kyle Stachowicz, Brian Ichter, Danny Driess, Suraj Nair, Quan Vuong, Oier Mees, Chelsea Finn, Sergey Levine 论文链接&…...
2025年AI手机集中上市,三星Galaxy S25系列上市
2025年被认为是AI手机集中爆发的一年,各大厂商都会推出搭载人工智能的智能手机。三星Galaxy S25系列全球上市了。 三星Galaxy S25系列包含S25、S25和S25 Ultra三款机型,起售价为800美元(约合人民币5800元)。全系搭载骁龙8 Elite芯…...
八股文 (一)
文章目录 项目地址一、前端1.1 大文件上传,预览1.2 首页性能优化1.2 流量染色,灰度发布1.3 Websock心跳机制,大数据实时数据优化1.4 Gpu 加速 fps优化1.5 echarts包大小优化和组件封装1.6 前端监控系统1.7 超大虚拟列表卡顿1. 实现2. 相关问题(1) 什么是虚拟化列表,为什么要…...
在虚拟机里运行frida-server以实现对虚拟机目标软件的监测和修改参数(一)(android Google Api 35高版本版)
frida-server下载路径 我这里选择较高版本的frida-server-16.6.6-android-x86_64 以root身份启动adb 或 直接在android studio中打开 adb root 如果使用android studio打开的话,最好选择google api的虚拟机,默认以root模式开启 跳转到下载的frida-se…...
FLTK - FLTK1.4.1 - demo - animgifimage-play
文章目录 FLTK - FLTK1.4.1 - demo - animgifimage-play概述笔记END FLTK - FLTK1.4.1 - demo - animgifimage-play 概述 看的官方demo越多,在每个新demo中能看到的新增知识点越少。这是好事。 不可能一次将细节都记住,只要知道每个官方demo能干啥&…...
