【Oracle】索引相关

article/2025/6/26 2:56:03

在这里插入图片描述

个人主页:Guiat
归属专栏:Oracle

在这里插入图片描述

文章目录

  • 1. 索引基础概述
    • 1.1 索引的作用与价值
    • 1.2 索引的工作原理
    • 1.3 索引的存储结构
    • 1.4 索引与表的关系
  • 2. Oracle索引类型
    • 2.1 B树索引(B-Tree Index)
      • 2.1.1 B树索引结构
      • 2.1.2 创建B树索引
    • 2.2 位图索引(Bitmap Index)
      • 2.2.1 位图索引结构
      • 2.2.2 创建位图索引
    • 2.3 函数索引(Function-Based Index)
      • 2.3.1 函数索引应用场景
      • 2.3.2 创建函数索引
    • 2.4 分区索引(Partitioned Index)
      • 2.4.1 分区索引类型
      • 2.4.2 创建分区索引
    • 2.5 反向键索引(Reverse Key Index)
      • 2.5.1 反向键索引工作原理
      • 2.5.2 创建反向键索引
    • 2.6 索引组织表(Index-Organized Table)
      • 2.6.1 索引组织表与堆表对比
      • 2.6.2 创建索引组织表
  • 3. 索引管理与维护
    • 3.1 查看索引信息
    • 3.2 索引监控与分析
      • 3.2.1 启用索引监控
      • 3.2.2 分析索引统计信息
    • 3.3 索引重建
      • 3.3.1 判断索引是否需要重建
      • 3.3.2 索引重建方法
    • 3.4 索引可见性管理
    • 3.5 索引分区维护
  • 4. 索引设计最佳实践
    • 4.1 索引列选择策略
      • 4.1.1 选择性计算
    • 4.2 复合索引设计
      • 4.2.1 列顺序优化
      • 4.2.2 索引跳跃扫描
    • 4.3 函数索引设计
      • 4.3.1 常见函数索引场景
      • 4.3.2 函数索引注意事项
    • 4.4 虚拟列索引
    • 4.5 索引使用的常见误区
      • 4.5.1 索引不生效的常见原因
  • 5. 高级索引技术
    • 5.1 索引压缩
    • 5.2 部分索引

正文

1. 索引基础概述

索引是Oracle数据库中提高查询性能的关键结构,它类似于书籍的目录,帮助数据库快速定位和访问数据。

1.1 索引的作用与价值

  • 加速数据检索操作
  • 减少I/O操作和CPU使用
  • 提高排序和分组效率
  • 强制实施唯一性约束
  • 优化连接操作

1.2 索引的工作原理

查询处理
索引存在?
索引扫描
全表扫描
通过ROWID访问表
读取所有数据块
返回结果

1.3 索引的存储结构

Oracle索引在物理上是独立于表数据的单独段,它们存储在自己的数据块中。

索引
索引段
索引区
索引块
索引条目
键值 + ROWID

1.4 索引与表的关系

ROWID
ROWID
ROWID
ROWID
行1
行2
行3
行4
索引
条目1
条目2
条目3
条目4

2. Oracle索引类型

Oracle提供了多种索引类型,每种类型都有其特定的用途和优势。

2.1 B树索引(B-Tree Index)

B树索引是Oracle中最常用的索引类型,适用于大多数场景。

2.1.1 B树索引结构

根节点
分支节点1
分支节点2
叶节点1
叶节点2
叶节点3
叶节点4

2.1.2 创建B树索引

-- 创建基本B树索引
CREATE INDEX emp_ename_idx ON employees(employee_name);-- 创建唯一索引
CREATE UNIQUE INDEX emp_id_idx ON employees(employee_id);-- 创建复合索引
CREATE INDEX emp_dept_job_idx ON employees(department_id, job_id);-- 创建带表空间的索引
CREATE INDEX emp_salary_idx ON employees(salary)
TABLESPACE indexes
STORAGE (INITIAL 1M NEXT 1M);-- 创建并行索引
CREATE INDEX emp_hire_idx ON employees(hire_date)
PARALLEL 4;-- 创建带函数的索引
CREATE INDEX emp_upper_name_idx ON employees(UPPER(employee_name));

2.2 位图索引(Bitmap Index)

位图索引适用于基数低(唯一值较少)的列,如性别、状态等。

2.2.1 位图索引结构

位图索引
MALE (位图)
FEMALE (位图)
10010...
01101...

2.2.2 创建位图索引

-- 创建基本位图索引
CREATE BITMAP INDEX emp_gender_idx ON employees(gender);-- 创建复合位图索引
CREATE BITMAP INDEX emp_dept_status_idx 
ON employees(department_id, status);-- 创建带压缩的位图索引
CREATE BITMAP INDEX emp_region_idx 
ON employees(region_id)
COMPRESS 2;

2.3 函数索引(Function-Based Index)

函数索引基于列的表达式或函数创建,允许优化带有函数的查询。

2.3.1 函数索引应用场景

函数索引应用场景
大小写不敏感查询
日期计算
数学计算
条件表达式
自定义函数
UPPER(name)
TRUNC(date)
ROUND(salary/1000)
CASE WHEN...
my_package.function()

2.3.2 创建函数索引

-- 创建大小写不敏感索引
CREATE INDEX emp_upper_name_idx ON employees(UPPER(employee_name));-- 创建日期函数索引
CREATE INDEX emp_hire_year_idx ON employees(EXTRACT(YEAR FROM hire_date));-- 创建数学计算索引
CREATE INDEX emp_annual_salary_idx ON employees(salary * 12);-- 创建条件表达式索引
CREATE INDEX emp_salary_category_idx ON employees(CASE WHEN salary < 5000 THEN 'LOW'WHEN salary BETWEEN 5000 AND 10000 THEN 'MEDIUM'ELSE 'HIGH'END
);

2.4 分区索引(Partitioned Index)

分区索引与分区表配合使用,提高大表的性能和可管理性。

2.4.1 分区索引类型

分区索引类型
本地分区索引
全局分区索引
与表使用相同分区方案
分区独立维护
分区自动对齐
使用独立分区方案
跨表分区查询
维护成本较高

2.4.2 创建分区索引

-- 假设有一个按日期范围分区的表
CREATE TABLE sales (sale_id NUMBER,sale_date DATE,amount NUMBER,customer_id NUMBER
)
PARTITION BY RANGE (sale_date) (PARTITION sales_q1_2023 VALUES LESS THAN (TO_DATE('01-APR-2023', 'DD-MON-YYYY')),PARTITION sales_q2_2023 VALUES LESS THAN (TO_DATE('01-JUL-2023', 'DD-MON-YYYY')),PARTITION sales_q3_2023 VALUES LESS THAN (TO_DATE('01-OCT-2023', 'DD-MON-YYYY')),PARTITION sales_q4_2023 VALUES LESS THAN (TO_DATE('01-JAN-2024', 'DD-MON-YYYY'))
);-- 创建本地分区索引
CREATE INDEX sales_date_idx ON sales(sale_date) LOCAL;-- 创建带命名的本地分区索引
CREATE INDEX sales_customer_idx ON sales(customer_id) LOCAL (PARTITION sales_cust_q1_2023,PARTITION sales_cust_q2_2023,PARTITION sales_cust_q3_2023,PARTITION sales_cust_q4_2023
);-- 创建全局分区索引
CREATE INDEX sales_amount_idx ON sales(amount)
GLOBAL PARTITION BY RANGE (amount) (PARTITION sales_small VALUES LESS THAN (1000),PARTITION sales_medium VALUES LESS THAN (5000),PARTITION sales_large VALUES LESS THAN (10000),PARTITION sales_xlarge VALUES LESS THAN (MAXVALUE)
);

2.5 反向键索引(Reverse Key Index)

反向键索引通过反转键值的字节顺序来减轻索引热点问题。

2.5.1 反向键索引工作原理

原始键值
反转过程
反转后键值
1234
反转
4321
5678
反转
8765

2.5.2 创建反向键索引

-- 创建反向键索引
CREATE INDEX emp_id_reverse_idx ON employees(employee_id) REVERSE;-- 修改现有索引为反向键索引
ALTER INDEX emp_id_idx REBUILD REVERSE;-- 将反向键索引改回普通索引
ALTER INDEX emp_id_reverse_idx REBUILD NOREVERSE;

2.6 索引组织表(Index-Organized Table)

索引组织表(IOT)是一种特殊的表,其数据按主键顺序存储在索引结构中。

2.6.1 索引组织表与堆表对比

索引组织表结构
堆表结构
按主键排序存储
表数据
溢出段
无序存储
表数据
有序指针
索引

2.6.2 创建索引组织表

-- 创建基本索引组织表
CREATE TABLE customers (customer_id NUMBER PRIMARY KEY,first_name VARCHAR2(50),last_name VARCHAR2(50),email VARCHAR2(100),phone VARCHAR2(20)
) ORGANIZATION INDEX;-- 创建带溢出段的索引组织表
CREATE TABLE orders (order_id NUMBER PRIMARY KEY,customer_id NUMBER,order_date DATE,total_amount NUMBER,shipping_address VARCHAR2(200),billing_address VARCHAR2(200),notes VARCHAR2(1000)
) ORGANIZATION INDEXPCTTHRESHOLD 30OVERFLOW TABLESPACE users;-- 创建带二级索引的索引组织表
CREATE TABLE products (product_id NUMBER PRIMARY KEY,product_name VARCHAR2(100),category_id NUMBER,price NUMBER,description VARCHAR2(2000)
) ORGANIZATION INDEX;-- 为索引组织表创建二级索引
CREATE INDEX products_category_idx ON products(category_id);

3. 索引管理与维护

3.1 查看索引信息

Oracle提供了多种数据字典视图来查看索引信息。

-- 查看当前用户的所有索引
SELECT index_name, index_type, table_name, uniqueness, status
FROM user_indexes
ORDER BY table_name, index_name;-- 查看索引列信息
SELECT index_name, column_name, column_position
FROM user_ind_columns
WHERE table_name = 'EMPLOYEES'
ORDER BY index_name, column_position;-- 查看索引大小
SELECT i.index_name, i.table_name, ROUND(s.bytes/1024/1024,2) "Size (MB)"
FROM user_indexes i, user_segments s
WHERE i.index_name = s.segment_name
ORDER BY s.bytes DESC;-- 查看索引统计信息
SELECT index_name, blevel, leaf_blocks, distinct_keys, avg_leaf_blocks_per_key, avg_data_blocks_per_key
FROM user_indexes
WHERE table_name = 'EMPLOYEES';-- 查看索引使用情况
SELECT o.name, i.name, i.used_in_join, i.used_in_predicate, i.used_in_sort, i.used_in_groupby
FROM v$object_usage i, user_objects o
WHERE i.index_name = o.object_name
AND o.object_type = 'INDEX';

3.2 索引监控与分析

监控索引使用情况对于性能优化至关重要。

3.2.1 启用索引监控

-- 启用索引监控
ALTER INDEX emp_ename_idx MONITORING USAGE;-- 查看索引使用情况
SELECT * FROM v$object_usage;-- 禁用索引监控
ALTER INDEX emp_ename_idx NOMONITORING USAGE;

3.2.2 分析索引统计信息

-- 收集单个索引的统计信息
ANALYZE INDEX emp_ename_idx COMPUTE STATISTICS;-- 使用DBMS_STATS收集索引统计信息
BEGINDBMS_STATS.GATHER_INDEX_STATS(ownname => 'HR',indname => 'EMP_ENAME_IDX',estimate_percent => 100,degree => 4);
END;
/-- 收集表及其所有索引的统计信息
BEGINDBMS_STATS.GATHER_TABLE_STATS(ownname => 'HR',tabname => 'EMPLOYEES',cascade => TRUE,estimate_percent => 30,method_opt => 'FOR ALL COLUMNS SIZE AUTO',degree => 4);
END;
/

3.3 索引重建

随着时间推移,索引可能变得碎片化,需要重建以优化性能。

3.3.1 判断索引是否需要重建

-- 查看索引碎片化程度
SELECT index_name, blevel, leaf_blocks, clustering_factor
FROM user_indexes
WHERE table_name = 'EMPLOYEES';-- 高clustering_factor相对于表的块数表明索引可能需要重建
SELECT i.index_name, i.clustering_factor, t.blocks, ROUND(i.clustering_factor/t.blocks, 2) "CF/Blocks Ratio"
FROM user_indexes i, user_tables t
WHERE i.table_name = t.table_name
AND i.table_name = 'EMPLOYEES';

3.3.2 索引重建方法

-- 基本索引重建
ALTER INDEX emp_ename_idx REBUILD;-- 带表空间的索引重建
ALTER INDEX emp_ename_idx REBUILD TABLESPACE indexes;-- 并行重建索引
ALTER INDEX emp_ename_idx REBUILD PARALLEL 4;-- 在线重建索引(不锁表)
ALTER INDEX emp_ename_idx REBUILD ONLINE;-- 重建带压缩的索引
ALTER INDEX emp_ename_idx REBUILD COMPRESS 2;-- 重建分区索引的特定分区
ALTER INDEX sales_date_idx REBUILD PARTITION sales_q1_2023;

3.4 索引可见性管理

Oracle允许将索引设为不可见,这样优化器就不会使用它,但索引仍会维护。

-- 将索引设为不可见
ALTER INDEX emp_ename_idx INVISIBLE;-- 将索引设为可见
ALTER INDEX emp_ename_idx VISIBLE;-- 查看索引可见性
SELECT index_name, visibility
FROM user_indexes
WHERE table_name = 'EMPLOYEES';-- 启用不可见索引的使用
ALTER SESSION SET OPTIMIZER_USE_INVISIBLE_INDEXES = TRUE;

3.5 索引分区维护

分区索引需要特殊的维护操作。

-- 添加新分区
ALTER TABLE sales ADD PARTITION sales_q1_2024
VALUES LESS THAN (TO_DATE('01-APR-2024', 'DD-MON-YYYY'));-- 本地分区索引自动添加对应分区
-- 全局分区索引需要重建
ALTER INDEX sales_amount_idx REBUILD;-- 合并分区
ALTER TABLE sales 
MERGE PARTITIONS sales_q1_2023, sales_q2_2023
INTO PARTITION sales_h1_2023;-- 拆分分区
ALTER TABLE sales
SPLIT PARTITION sales_h1_2023 AT (TO_DATE('01-APR-2023', 'DD-MON-YYYY'))
INTO (PARTITION sales_q1_2023, PARTITION sales_q2_2023);-- 交换分区
CREATE TABLE sales_q1_2023_temp AS SELECT * FROM sales PARTITION (sales_q1_2023) WHERE 1=0;
ALTER TABLE sales EXCHANGE PARTITION sales_q1_2023 WITH TABLE sales_q1_2023_temp;

4. 索引设计最佳实践

4.1 索引列选择策略

索引列选择策略
高选择性列
WHERE子句列
JOIN条件列
ORDER BY列
GROUP BY列
复合索引顺序
唯一值较多
分布均匀
频繁过滤条件
外键列
高选择性列在前
范围条件列在后

4.1.1 选择性计算

-- 计算列的选择性
SELECT COUNT(DISTINCT department_id) / COUNT(*) AS selectivity
FROM employees;-- 选择性接近1表示唯一值多,适合建索引
-- 选择性接近0表示重复值多,不适合建索引-- 查看表中各列的选择性
SELECT column_name, COUNT(DISTINCT "COLUMN_VALUE") / COUNT(*) AS selectivity
FROM (SELECT department_id AS "COLUMN_VALUE" FROM employeesUNION ALLSELECT job_id AS "COLUMN_VALUE" FROM employeesUNION ALLSELECT manager_id AS "COLUMN_VALUE" FROM employees
)
GROUP BY column_name
ORDER BY selectivity DESC;

4.2 复合索引设计

复合索引的列顺序对性能有重大影响。

4.2.1 列顺序优化

复合索引列顺序
选择性高的列在前
等值条件列在前
范围条件列在后
排序列顺序匹配
(employee_id, department_id)
(department_id, hire_date)
WHERE dept_id = 10 AND hire_date > '2020-01-01'
ORDER BY dept_id, last_name

4.2.2 索引跳跃扫描

Oracle 11g引入的索引跳跃扫描允许优化器在某些情况下使用复合索引,即使查询中没有指定前导列。

-- 创建复合索引
CREATE INDEX emp_dept_job_idx ON employees(department_id, job_id);-- 以下查询可能使用索引跳跃扫描
SELECT DISTINCT job_id FROM employees WHERE job_id = 'MANAGER';-- 查看执行计划是否使用索引跳跃扫描
EXPLAIN PLAN FOR
SELECT DISTINCT job_id FROM employees WHERE job_id = 'MANAGER';SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
-- 查找"INDEX SKIP SCAN"操作

4.3 函数索引设计

函数索引可以优化带有表达式的查询。

4.3.1 常见函数索引场景

-- 大小写不敏感搜索
CREATE INDEX emp_upper_name_idx ON employees(UPPER(last_name));
-- 优化查询: WHERE UPPER(last_name) = 'SMITH'-- 日期截断
CREATE INDEX emp_hire_month_idx ON employees(TRUNC(hire_date, 'MM'));
-- 优化查询: WHERE TRUNC(hire_date, 'MM') = TO_DATE('01-JAN-2020', 'DD-MON-YYYY')-- 数学计算
CREATE INDEX emp_annual_salary_idx ON employees(salary * 12);
-- 优化查询: WHERE salary * 12 > 100000-- 字符串操作
CREATE INDEX emp_email_domain_idx ON employees(SUBSTR(email, INSTR(email, '@') + 1));
-- 优化查询: WHERE SUBSTR(email, INSTR(email, '@') + 1) = 'oracle.com'

4.3.2 函数索引注意事项

函数索引注意事项
确保查询使用完全相同的表达式
函数必须是确定性的
避免过于复杂的表达式
考虑虚拟列替代
WHERE UPPER(name) = 'SMITH'
相同输入总是产生相同输出
影响维护成本
Oracle 11g及以上版本

4.4 虚拟列索引

Oracle 11g引入的虚拟列可以替代某些函数索引场景。

-- 添加虚拟列
ALTER TABLE employees ADD (annual_salary GENERATED ALWAYS AS (salary * 12) VIRTUAL,email_domain GENERATED ALWAYS AS (SUBSTR(email, INSTR(email, '@') + 1)) VIRTUAL
);-- 在虚拟列上创建索引
CREATE INDEX emp_annual_salary_idx ON employees(annual_salary);
CREATE INDEX emp_email_domain_idx ON employees(email_domain);-- 使用虚拟列的查询
SELECT * FROM employees WHERE annual_salary > 100000;
SELECT * FROM employees WHERE email_domain = 'oracle.com';

4.5 索引使用的常见误区

索引使用误区
过度索引
索引不生效
忽视维护成本
不考虑数据分布
增加DML开销
浪费存储空间
在索引列上使用函数
使用IS NULL/IS NOT NULL
使用OR条件
类型不匹配
插入/更新/删除开销
碎片化问题
低选择性列
数据倾斜

4.5.1 索引不生效的常见原因

-- 在索引列上使用函数(未创建函数索引)
SELECT * FROM employees WHERE UPPER(last_name) = 'SMITH'; -- 不使用last_name索引-- 使用IS NULL(除非索引是位图索引或创建时包含NULL值)
SELECT * FROM employees WHERE manager_id IS NULL; -- 可能不使用manager_id索引-- 使用OR条件(除非每个条件都有索引)
SELECT * FROM employees WHERE department_id = 10 OR job_id = 'MANAGER'; -- 可能不使用索引-- 类型不匹配
SELECT * FROM employees WHERE employee_id = '100'; -- 隐式转换可能阻止使用索引-- 使用否定条件
SELECT * FROM employees WHERE department_id != 10; -- 可能不使用department_id索引-- 使用LIKE带前缀通配符
SELECT * FROM employees WHERE last_name LIKE '%Smith'; -- 不使用last_name索引

5. 高级索引技术

5.1 索引压缩

索引压缩可以减少索引大小,提高缓存效率。

-- 创建带压缩的B树索引
CREATE INDEX emp_dept_job_idx ON employees(department_id, job_id)
COMPRESS 1; -- 压缩前导列-- 创建完全压缩的B树索引
CREATE INDEX emp_dept_job_loc_idx ON employees(department_id, job_id, location_id)
COMPRESS; -- 压缩所有列-- 修改现有索引的压缩
ALTER INDEX emp_dept_job_idx REBUILD COMPRESS 2; -- 压缩前两列-- 禁用索引压缩
ALTER INDEX emp_dept_job_idx REBUILD NOCOMPRESS;

5.2 部分索引

部分索引只为表中满足特定条件的行创建索引。

-- 创建部分索引
CREATE INDEX emp_high_salary_idx ON employees(employee_id)
WHERE salary > 10000;-- 创建部分唯一索引
CREATE UNIQUE INDEX emp_active_email_idx ON employees(email)
WHERE status = 'ACTIVE';-- 部分索引只对满足WHERE条件的查询有效
-- 以下查询可以使用部分索引
SELECT * FROM employees WHERE salary > 10000 AND department_id = 20;-- 以下查询不能使用部分索引
SELECT * FROM employees WHERE salary > 5000 AND department_id = 20;

结语
感谢您的阅读!期待您的一键三连!欢迎指正!

在这里插入图片描述


http://www.hkcw.cn/article/KPPsuPROLq.shtml

相关文章

Dify工作流实践—根据word需求文档编写测试用例到Excel中

前言 这篇文章依赖到的操作可查阅我之前的文章&#xff1a; dify里的大模型是怎么添加进来的&#xff1a;在Windows本地部署Dify详细操作 flask 框架app.route()函数的开发和调用&#xff1a;PythonWeb开发框架—Flask工程创建和app.route使用详解 结构化提示词的编写&…

同态加密在物联网数据聚合与分析中的关键作用

在物联网&#xff08;IoT&#xff09;时代&#xff0c;智能家居设备、城市交通传感器、工业生产监测装置等各类设备如雨后春笋般涌现&#xff0c;产生了海量的数据。据国际数据公司&#xff08;IDC&#xff09;预测&#xff0c;到2025年全球物联网设备设备数量已突破 300 亿台&…

ffmpeg 的视频格式转换 c# win10

1&#xff0c;下载ffmpeg &#xff0c;并设置环境变量。 ffmpeghttps://www.gyan.dev/ffmpeg/builds/ 2.新建.net 9.0 winform using System; using System.Diagnostics; using System.Text; using System.Windows.Forms;namespace WinFormsApp11 {public partial class Fo…

[MySQL初阶]MySQL(7) 表的内外连接

标题&#xff1a;[MySQL初阶]MySQL(7)表的内外连接 水墨不写bug 文章目录 一. 内连接 (INNER JOIN)二. 外连接 (OUTER JOIN)关键区别总结 三、 如何选择 在 MySQL 中&#xff0c;连接&#xff08;JOIN&#xff09;用于根据两个或多个表之间的相关列组合行。内连接&#xff08;I…

Python自带的窗体开发技术:Tkinter 从入门到精通

文章目录 第一部分&#xff1a;Tkinter 基础1. 第一个 Tkinter 程序2. 基本组件介绍3. 布局管理pack() - 简单布局grid() - 网格布局place() - 精确位置布局 第二部分&#xff1a;Tkinter 进阶1. 事件处理2. 对话框3. 菜单和工具栏 第三部分&#xff1a;Tkinter 高级应用1. 使用…

第十七章 数据集成

系列文章目录 第一章 总体概述 第二章 在实体机上安装ubuntu 第三章 Windows远程连接ubuntu 第四章 使用Docker安装和运行EMQX 第五章 Docker卸载EMQX 第六章 EMQX客户端MQTTX Desktop的安装与使用 第七章 EMQX客户端MQTTX CLI的安装与使用 第八章 Wireshark工具的安装与使用 …

榴莲能从奢侈果变成亲民果吗 供应增加价格下降

夏季是各类水果集中上市的季节,榴莲爱好者们最近有口福了,市场上榴莲价格大幅下降,甚至出现“腰斩”的情况。这背后的原因是什么?榴莲是否会从“奢侈果”变成“亲民果”?走进浙江湖州的一家榴莲批发店,可以看到榴莲成堆地摆放在货架上,老板肖女士正在通过直播销售榴莲。…

育碧“夭折”的沙盒游戏概念图曝光:类似《我的世界》风格 创意总监离职

育碧在经历长期财务困境导致的大规模重组背景下,陆续叫停了多个项目,包括《全境封锁:郊野行动》《XDefiant》以及“Project Q”。当地时间1日,外媒MP1ST披露了育碧另一个尚未官宣但已夭折的计划——“Project Renaissance”。早在2023年,Kotaku曾报道该项目的存在。据报道…

菲律宾拉欧盟搞“安全与防务对话” 深化防务合作应对挑战

在南海紧张局势不断升级之际,菲律宾外长马纳罗与欧盟外交与安全政策高级代表卡拉斯在马尼拉召开联合记者会,宣布双方同意建立安全与防务对话机制。该机制旨在应对网络攻击、外来干预和信息操纵等跨境新兴安全威胁和挑战。安全与防务对话将以现有机制为基础,重点关注海域意识…

谈判现场曝光 俄团长冷眼审视乌代表表情严肃!

谈判现场曝光 俄团长冷眼审视乌代表。当地时间6月2日,俄罗斯代表团与乌克兰代表团,抵达土耳其伊斯坦布尔举行第二轮俄乌谈判。随后俄曝光了俄乌谈判现场!谈判现场曝光 俄团长冷眼审视乌代表谈判现场曝光 俄团长冷眼审视乌代表谈判现场曝光 俄团长冷眼审视乌代表谈判现场曝光…

ubuntu24.04 查看时区并设置Asia/Shanghai时区

一、查看当前系统设置的时区 timedatectl 二、修改为Asia/Shanghai sudo timedatectl set-timezone Asia/Shanghai sudo nano /etc/timezone #修改内容为&#xff1a;Asia/Shanghai sudo dpkg-reconfigure --frontend noninteractive tzdata

贾冰瘦了 网友:压力给到沈腾 减肥热潮席卷娱乐圈

5月31日,演员贾冰的妻子发布了一段视频,祝福大家端午节快乐,并配文“从此我家多了个瘦子”。在两人合影中,贾冰明显瘦了很多。评论区里,网友们纷纷询问他如何瘦这么多,甚至有人表示他瘦得都脱相了。贾冰妻子回复说,主要是通过少吃(一天一顿的那种)和运动来达到减肥效果…

5月100个城市新房均价上涨 政策利好支撑需求释放

5月100个城市新房均价上涨 政策利好支撑需求释放!6月1日,中指研究院发布《中国房地产指数系统百城价格指数报告》。报告显示,5月全国100个城市新建住宅平均价格环比上涨0.30%,同比上涨2.56%。从涨跌城市来看,33个城市环比上涨,54个城市环比下跌,13个城市持平。二手房价格…

没有假球 全是世仇 苏超火出圈:比赛第一,友谊第十四

“友谊第一,比赛第二。” “等等!重来!” “友谊第一,比赛第十四!” “不对!再来!” “比赛第一,友谊第十四。”近日,被称为“苏超”的江苏省首届城市足球联赛爆火出圈。盐城现场观众达到22613人,网友感叹上座率堪比世界杯。据闪电新闻报道,“苏超”观众数量甚至超过…

这种凉鞋易致孩子性早熟还有毒 邻苯超标严重

这种凉鞋易致孩子性早熟还有毒!目前正值儿童凉鞋购买高峰期,各种款式的儿童凉拖鞋如水晶鞋、洞洞鞋、果冻鞋等因其外观漂亮可爱且穿着方便而受到小朋友和家长们的喜爱。然而,在孩子们穿着这些漂亮的凉鞋奔跑嬉戏时,潜在的安全隐患也悄然存在。由于材质差异,如果不仔细甄别…

中小学生攀比起"体考神器"碳板鞋 校园内的新潮流

最近,碳板鞋在校园里变得非常流行。这类鞋子外观炫酷、科技感十足,受到很多学生的喜爱。一些家长认为这类专业跑步鞋能帮助孩子提高体育成绩,因此不惜重金购买高端碳板鞋。然而,这种现象也引发了一些问题。碳板跑鞋是一种在中底嵌入碳纤维板的跑步鞋,设计初衷是为了提高精…

金价大涨!金饰价格重回1000元/克 国际金价反弹带动

美东时间5月29日,国际金价出现反弹。现货黄金价格上涨0.96%,达到3317.8美元/盎司;COMEX黄金期货上涨0.61%,报3342.6美元/盎司;COMEX白银期货则上涨0.84%,报33.44美元/盎司。次日早间,金价再度下跌。现货黄金价格微跌0.02%,报3316.6美元/盎司;COMEX黄金期货下跌0.17%,…

一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录——4. 配置服务器终端环境 zsh , oh my zsh, vim

前言 通过前面几篇文章&#xff0c;我们顺利的 安装了 ubuntu server 服务器&#xff0c;并且配置好了 ssh 免密登录服务器&#xff0c;也安装好了 服务器常用软件安装,接下来&#xff0c;我们要仔细的配置一下我们的终端环境&#xff0c;让服务器的终端更加好用。 一般情况下…

AI大模型开发架构设计(21)——LLM大模型构建AI Agents案例实战

文章目录 1 AI Agent 智能体以及应用场景剖析什么是 AI Agent 智能体?什么是大语音模型?LLM 大模型存在的局限性LLM Agent是什么?2 基于 LLM 大模型的 AI Agent 技术架构深度剖析规划能力是什么?记忆能力是什么?工具使用能力是什么?1 AI Agent 智能体以及应用场景剖析 什…

(Python)列表的操作(增删改查、排序)

一、增 append()【整体添加&#xff0c;将一个元素整体添加】 2.extend()【分散添加&#xff0c;将元素逐一添加】 insert()【在制定位置插入元素】 二、删 del【根据下标删除】 pop【根据下标删除】 remove【根据值进行删除&#xff0c;默认指定删除第一个出现的元素】 三、…