人大金仓(Kingbase)数据库高阶函数详解
人大金仓(Kingbase)数据库高阶函数详解
人大金仓(Kingbase)数据库是一款基于 PostgreSQL 的国产关系型数据库(PostgreSQL 高阶函数详解:全面深入的功能与实用示例 ),提供了丰富的高阶函数,以支持复杂的数据处理和分析任务。本文将对人大金仓数据库中的高阶函数进行详尽的介绍,包括递归查询、数学函数、集合操作符、字符串函数、JSON 函数、时间函数、聚合函数、地理空间函数和窗口函数。这些函数不仅帮助用户高效地处理数据,还支持各种高级操作,如层级数据查询、地理信息处理和复杂的统计计算。通过详细的示例和解释,本文旨在帮助开发者深入理解并应用这些强大的功能,提升数据处理能力和工作效率。
1. 递归查询
递归查询用于处理层级结构或树状数据。它通过一个公共表表达式(CTE)实现自我引用,从而处理复杂的递归逻辑。
语法:
WITH RECURSIVE cte_name AS (-- 非递归部分SELECT ...UNION ALL-- 递归部分SELECT ...
)
SELECT * FROM cte_name;
详细示例:
示例 1: 员工层级结构
这个示例展示了如何使用递归查询来处理员工的层级结构数据:
-- 创建员工表
CREATE TABLE employees (emp_id SERIAL PRIMARY KEY,emp_name VARCHAR(100),manager_id INTEGER
);-- 插入数据
INSERT INTO employees (emp_name, manager_id) VALUES
('Alice', NULL), -- CEO
('Bob', 1), -- Reports to Alice
('Charlie', 1), -- Reports to Alice
('David', 2), -- Reports to Bob
('Eve', 3); -- Reports to Charlie-- 查询员工层级
WITH RECURSIVE employee_hierarchy AS (SELECT emp_id, emp_name, manager_id, 1 AS levelFROM employeesWHERE manager_id IS NULLUNION ALLSELECT e.emp_id, e.emp_name, e.manager_id, eh.level + 1FROM employees eINNER JOIN employee_hierarchy eh ON e.manager_id = eh.emp_id
)
SELECT * FROM employee_hierarchy;
解释:
WITH RECURSIVE定义了一个递归的 CTE。- 非递归部分选择了最顶层的员工(即没有经理的员工)。
- 递归部分通过连接
employees表和employee_hierarchyCTE 来处理层级结构。
示例 2: 组织结构树
这个示例展示了如何用递归查询来生成组织结构树:
-- 假设有如下表格
CREATE TABLE org_structure (id SERIAL PRIMARY KEY,name VARCHAR(100),parent_id INTEGER
);-- 插入数据
INSERT INTO org_structure (name, parent_id) VALUES
('Company', NULL),
('Department A', 1),
('Department B', 1),
('Team A1', 2),
('Team B1', 3);-- 查询组织结构
WITH RECURSIVE org_tree AS (SELECT id, name, parent_id, 1 AS depthFROM org_structureWHERE parent_id IS NULLUNION ALLSELECT o.id, o.name, o.parent_id, ot.depth + 1FROM org_structure oINNER JOIN org_tree ot ON o.parent_id = ot.id
)
SELECT * FROM org_tree;
解释:
WITH RECURSIVE用于创建一个递归的 CTE,org_tree。- 初始部分选择根节点(
parent_id IS NULL)。 - 递归部分连接父节点和子节点,以构建完整的组织结构树。
2. 数学函数
数学函数用于执行各种数学计算。
常用函数:
ABS(): 取绝对值ROUND(): 四舍五入CEIL(): 向上取整FLOOR(): 向下取整POWER(): 计算幂SQRT(): 计算平方根
详细示例:
示例 1: 基本数学操作
SELECT ABS(-5) AS absolute_value, -- 计算绝对值ROUND(3.14159, 2) AS rounded_value, -- 四舍五入到小数点后两位CEIL(4.2) AS ceiling_value, -- 向上取整到最接近的整数FLOOR(4.8) AS floor_value, -- 向下取整到最接近的整数POWER(2, 3) AS power_value, -- 计算 2 的 3 次方SQRT(16) AS square_root; -- 计算 16 的平方根
解释:
ABS()计算一个数的绝对值。ROUND()四舍五入到指定的小数位数。CEIL()向上取整到最接近的整数。FLOOR()向下取整到最接近的整数。POWER()计算一个数的幂。SQRT()计算一个数的平方根。
示例 2: 复合数学运算
-- 计算复合值
SELECT (POWER(3, 2) + 5) / SQRT(25) AS complex_calculation;
解释:
- 计算
3的2次方,加5,然后除以25的平方根。
3. 集合操作符
集合操作符用于对集合进行操作,如并集、交集和差集。
常用操作符:
UNION: 并集INTERSECT: 交集EXCEPT: 差集
详细示例:
示例 1: 并集、交集、差集
-- 创建示例表
CREATE TABLE set_a (value INTEGER);
CREATE TABLE set_b (value INTEGER);-- 插入数据
INSERT INTO set_a VALUES (1), (2), (3);
INSERT INTO set_b VALUES (2), (3), (4);-- 并集
SELECT value FROM set_a
UNION
SELECT value FROM set_b;-- 交集
SELECT value FROM set_a
INTERSECT
SELECT value FROM set_b;-- 差集
SELECT value FROM set_a
EXCEPT
SELECT value FROM set_b;
解释:
UNION返回两个集合的并集,即两个集合中的所有元素,去重。INTERSECT返回两个集合的交集,即两个集合中都存在的元素。EXCEPT返回两个集合的差集,即存在于第一个集合但不存在于第二个集合的元素。
示例 2: 多集合操作
-- 创建更多示例数据
CREATE TABLE set_c (value INTEGER);
INSERT INTO set_c VALUES (3), (4), (5);-- 结合多个集合操作
SELECT value FROM set_a
UNION
SELECT value FROM set_b
INTERSECT
SELECT value FROM set_c
EXCEPT
SELECT value FROM set_b;
解释:
UNION和INTERSECT和EXCEPT可以组合使用,以获得更复杂的集合操作结果。
4. 字符串函数
字符串函数用于操作和处理字符串。
常用函数:
LENGTH(): 获取字符串长度SUBSTRING(): 提取子字符串CONCAT(): 连接字符串REPLACE(): 替换字符串TRIM(): 去除字符串两端的空格UPPER(): 转为大写LOWER(): 转为小写
详细示例:
示例 1: 基本字符串操作
SELECT LENGTH('Hello, Kingbase!') AS length, -- 字符串长度SUBSTRING('Hello, Kingbase!', 8, 8) AS substring, -- 提取子字符串CONCAT('Hello, ', 'Kingbase!') AS concatenated, -- 连接字符串REPLACE('Hello, Kingbase!', 'Kingbase', 'World') AS replaced, -- 替换字符串TRIM(' Hello, Kingbase! ') AS trimmed, -- 去除两端空格UPPER('Hello, Kingbase!') AS uppercase, -- 转为大写LOWER('Hello, Kingbase!') AS lowercase; -- 转为小写
解释:
LENGTH()计算字符串的长度。SUBSTRING()提
取指定位置和长度的子字符串。
CONCAT()连接多个字符串。REPLACE()替换字符串中的指定子串。TRIM()去除字符串两端的空格。UPPER()和LOWER()分别将字符串转换为大写或小写。
示例 2: 格式化字符串
-- 格式化字符串
SELECT TO_CHAR(1234.5678, 'FM9999.00') AS formatted_number, -- 格式化数字TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS') AS formatted_date; -- 格式化日期时间
解释:
TO_CHAR()用于将数字或日期格式化为指定的字符串格式。
5. JSON 函数
JSON 函数用于处理 JSON 数据类型。
常用函数:
JSON_EXTRACT_PATH(): 提取 JSON 数据路径JSONB_SET(): 更新 JSONB 数据TO_JSON(): 转换为 JSONJSON_AGG(): 聚合为 JSON 数组JSON_OBJECT_AGG(): 聚合为 JSON 对象
详细示例:
示例 1: 基本 JSON 操作
-- 创建 JSON 表
CREATE TABLE json_data (id SERIAL PRIMARY KEY,data JSONB
);-- 插入数据
INSERT INTO json_data (data) VALUES
('{"name": "Alice", "age": 30, "city": "New York"}'),
('{"name": "Bob", "age": 25, "city": "Los Angeles"}');-- 提取 JSON 数据
SELECTdata->>'name' AS name,data->>'age' AS age
FROM json_data;-- 更新 JSON 数据
UPDATE json_data
SET data = JSONB_SET(data, '{age}', '"31"')
WHERE data->>'name' = 'Alice';-- 聚合为 JSON 数组
SELECT JSON_AGG(data) AS json_array
FROM json_data;
解释:
data->>'name'提取 JSON 对象中的name字段。JSONB_SET()更新 JSONB 数据的指定字段。JSON_AGG()聚合 JSON 数据为 JSON 数组。
示例 2: JSON 对象聚合
-- 聚合为 JSON 对象
SELECT JSON_OBJECT_AGG(name, age) AS name_age_json
FROM json_data;
解释:
JSON_OBJECT_AGG()将字段名和值聚合为 JSON 对象。
6. 时间函数
时间函数用于处理日期和时间。
常用函数:
NOW(): 当前时间DATE_PART(): 提取日期部分AGE(): 计算时间差DATE_TRUNC(): 截断时间到指定精度TO_CHAR(): 格式化日期时间
详细示例:
示例 1: 基本时间操作
SELECT NOW() AS current_time, -- 当前时间DATE_PART('year', NOW()) AS current_year, -- 提取当前年份AGE('2024-08-03', '2000-01-01') AS age_difference; -- 计算年龄差
解释:
NOW()返回当前时间。DATE_PART()提取当前日期的年份部分。AGE()计算两个日期之间的时间差。
示例 2: 更复杂的时间处理
-- 时间截断和格式化
SELECT DATE_TRUNC('month', NOW()) AS start_of_month, -- 当前月份的开始TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS') AS formatted_now; -- 格式化时间
解释:
DATE_TRUNC()将时间截断到指定精度(例如,月份的开始)。TO_CHAR()格式化时间为指定格式的字符串。
7. 聚合函数
聚合函数用于汇总数据。
常用函数:
SUM(): 求和AVG(): 求平均值MAX(): 求最大值MIN(): 求最小值COUNT(): 计数GROUP_CONCAT(): 将多个行连接成一个字符串
详细示例:
示例 1: 基本聚合操作
-- 创建示例表
CREATE TABLE sales (amount NUMERIC);-- 插入数据
INSERT INTO sales (amount) VALUES (100), (200), (300);-- 使用聚合函数
SELECT SUM(amount) AS total_sales, -- 总销售额AVG(amount) AS average_sales, -- 平均销售额MAX(amount) AS max_sales, -- 最大销售额MIN(amount) AS min_sales, -- 最小销售额COUNT(amount) AS number_of_sales -- 销售数量
FROM sales;
解释:
SUM()计算销售额的总和。AVG()计算销售额的平均值。MAX()和MIN()分别计算销售额的最大值和最小值。COUNT()计算销售记录的数量。
示例 2: 分组聚合
-- 创建示例表
CREATE TABLE department_sales (department VARCHAR(100),amount NUMERIC
);-- 插入数据
INSERT INTO department_sales (department, amount) VALUES
('Electronics', 1000),
('Furniture', 1500),
('Electronics', 2000),
('Furniture', 1200);-- 按部门汇总销售额
SELECT department,SUM(amount) AS total_sales,COUNT(amount) AS number_of_sales
FROM department_sales
GROUP BY department;
解释:
GROUP BY将销售数据按部门分组,并计算每个部门的总销售额和销售数量。
8. 地理空间函数
地理空间函数用于处理地理空间数据。
常用函数:
ST_Distance(): 计算两点间距离ST_Contains(): 判断一个几何对象是否包含另一个ST_Intersects(): 判断两个几何对象是否相交ST_Buffer(): 创建缓冲区
详细示例:
示例 1: 基本地理空间操作
-- 创建示例表
CREATE TABLE locations (name VARCHAR(100), geom GEOMETRY);-- 插入数据
INSERT INTO locations (name, geom) VALUES
('PointA', 'POINT(0 0)'),
('PointB', 'POINT(1 1)');-- 计算两点间距离
SELECT ST_Distance(a.geom, b.geom) AS distance
FROM locations a, locations b
WHERE a.name = 'PointA' AND b.name = 'PointB';
解释:
ST_Distance()计算两个地理点之间的距离。
示例 2: 判断几何对象是否相交
-- 创建示例表
CREATE TABLE geoms (name VARCHAR(100), geom GEOMETRY);-- 插入数据
INSERT INTO geoms (name, geom) VALUES
('Area1', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'),
('Area2', 'POLYGON((5 5, 5 15, 15 15, 15 5, 5 5))');-- 判断两个区域是否相交
SELECT ST_Intersects(a.geom, b.geom) AS intersects
FROM geoms a, geoms b
WHERE a.name = 'Area1' AND b.name = 'Area2';
解释:
ST_Intersects()判断两个几何对象是否相交。
示例 3: 创建缓冲区
-- 创建示例表
CREATE TABLE points (name VARCHAR(100), geom GEOMETRY);-- 插入数据
INSERT INTO points (name, geom) VALUES
('Point1', 'POINT(0 0)'),
('Point2', 'POINT(1 1)');-- 创建缓冲区
SELECT ST_Buffer(geom, 2) AS buffer
FROM points
WHERE name = 'Point1';
解释:
ST_Buffer()创建一个以指定距离为半径的缓冲区。
9. 窗口函数
窗口函数用于在查询结果集的特定窗口内执行计算。
常用窗口函数:
ROW_NUMBER(): 行号RANK(): 排名DENSE_RANK(): 紧密排名NTILE(): 分组SUM(): 窗口内求和AVG(): 窗口内求平均值LEAD(): 获取后续行的值LAG(): 获取前一行的值
详细示例:
示例 1: 行号和排名
-- 创建示例表
CREATE TABLE sales_data (sale_date DATE,amount NUMERIC
);-- 插入数据
INSERT INTO sales_data (sale_date, amount) VALUES
('2024-08-01', 100),
('2024-08-02', 200),
('2024-08-03', 150);-- 使用窗口函数
SELECT sale_date,amount,ROW_NUMBER() OVER (ORDER BY amount DESC) AS row_num, -- 行号RANK() OVER (ORDER BY amount DESC) AS rank, -- 排名DENSE_RANK() OVER (ORDER BY amount DESC) AS dense_rank -- 紧密排名
FROM sales_data;
解释:
ROW_NUMBER()为每行分配一个唯一的行号。RANK()为每行分配一个排名,存在并列的情况。DENSE_RANK()与RANK()类似,但排名不会跳过。
示例 2: 窗口内聚合
-- 使用窗口函数进行聚合
SELECT sale_date,amount,SUM(amount) OVER (ORDER BY sale_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_sales, -- 累计销售额LAG(amount) OVER (ORDER BY sale_date) AS previous_amount, -- 前一行的销售额LEAD(amount) OVER (ORDER BY sale_date) AS next_amount -- 后续行的销售额
FROM sales_data;
解释:
SUM()计算当前行之前(包括当前行)的累计销售额。LAG()和LEAD()分别获取前一行和后续行的销售额。
总结
本文深入探讨了人大金仓(Kingbase)数据库中的高阶函数,包括递归查询、数学函数、集合操作符、字符串函数、JSON 函数、时间函数、聚合函数、地理空间函数和窗口函数。每种函数的介绍都配备了详细的示例和解释,以展示其实际应用和操作细节。这些高阶函数不仅扩展了数据处理的能力,还使得复杂的数据分析和操作变得更加高效和灵活。通过掌握这些函数,开发者能够更好地处理层级数据、进行数学运算、操作字符串和JSON数据、处理时间信息、执行聚合分析、处理地理空间数据,以及利用窗口函数进行高级统计分析。这些功能的掌握将大大提升数据处理的能力和开发效率,使得人大金仓数据库成为一个更加强大的数据管理和分析工具。
相关文章:
人大金仓(Kingbase)数据库高阶函数详解
人大金仓(Kingbase)数据库高阶函数详解 人大金仓(Kingbase)数据库是一款基于 PostgreSQL 的国产关系型数据库(PostgreSQL 高阶函数详解:全面深入的功能与实用示例 ),提供了丰富的高阶函数,以支…...
云原生真机实验
基于Proxmox VE构建中小企业云计算平台 首先Proxmox VE是什么?能用来做什么? Proxmox VE是一个完整的企业虚拟化开源平台。借助内置的 Web 界面,可以在单个解决方案上轻松管理 VM(开虚拟机的) 和容器、软件定义的存储和网络、高可用性群集以…...
【电子电路学习笔记】——模电笔记
关于专栏:本专栏用于分享学习电子电路过程中记录的笔记。模电部分使用的教材是高等教育出版社,华成英主编的《模拟电子技术基础(第六版)》(其他版本的内容差不多,建议使用最新版教材)࿱…...
部署伪分布式 Hadoop集群
部署伪分布式 Hadoop集群 一、JDK安装配置1.1 下载JDK1.2 上传解压1.3 java环境配置 二、伪分布式 Hadoop 安装配置2.1 Hadoop 下载2.2 上传解压2.3 Hadoop 文件目录介绍2.4 Hadoop 配置2.4.1 修改 core-site.xml 配置文件2.4.2 修改 hdfs-site.xml 配置文件2.4.3 修改 hadoop-…...
十九、虚拟机VMware Workstation(CentOSDebian)的安装
目录 🌻🌻 一、安装 VMware Workstation1.1 安装 VMware Workstation1.2 虚拟机上安装 CentOS1.3 虚拟机安装 Debian 二、配置Debian方便第三方工具远程连接2.1 配置debian2.2 安装远程SSH工具并连接 一、安装 VMware Workstation 官网下载 本地资源库…...
理解Android framework之AOSP:从内核到应用层
一、AOSP Android framework确保设备的各个部件和程序顺利协同工作。对于想要全面了解 Android 设备内部工作原理、开发高质量应用、优化设备性能以及充分利用 Android 生态系统潜力的人来说,了解 Android 框架也是必不可少的。它是连接用户、开发者和 Android 平台…...
杂谈c语言——3.内存对齐
先看两个例子: typedef struct S {int a;double b;char c; }S;typedef struct B {int a;char b;double c; }B;int main() {printf("S : %d\n", sizeof(S));printf("B : %d\n", sizeof(B));return 0; } 结果为: S:24; B:16ÿ…...
瑞芯微Android设备指定应用开启性能模式
本文档主要针对特定应用(如 安兔兔)如何进行加速及性能的提升做相关说明。 快速开启方法 开启与关闭 在 device/rockchip/rk3xxx/下配置文件:package_performance.xml,在其中的节点中加入需要使用性能模式的包名:(…...
ASP.NET Core基础 - 简介
目录 一. 简介 A、跨平台性 B、高性能 C、开源性 D、模块化与可扩展性 E、集成现代前端技术 二. ASP.NET 4.x 和 ASP.NET Core 比较 A、架构与平台支持 B、性能 C、开发体验 D、社区支持与生态系统 三. NET 与 .NET Framework 比较 A、概念范围 B、跨平台能力 C…...
Flask+LayUI开发手记(一):LayUI表格的前端数据分页展现
用数据表格table展示系统数据,是LayUI的基本功能,编码十分简单,就是通过table.render()渲染,把属性配置好就OK了,十分方便,功能也十分强大。 不过,在实现时,把table的有个功能却理解…...
Vulnhub靶场DC-9练习
目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 发现SQL注入点2. Sqlmap跑数据3. 文件包含4. SSH爆破端口敲门服务5. 提权(写入/etc/passwd) 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/dc/DC-9.z…...
Java对象内存布局和对象头
文章目录 面试题Object object new Object() 谈谈你对这句话的理解? 对象在堆内存中存储布局权威定义(周志明老师JVM第三版)对象在堆内存中的存储布局详解对象头的MarkWord源码对象标记源码 对象内存布局(使用JOL证明)…...
python:基于YOLO框架和遥感图像的目标检测
作者:CSDN _养乐多_ 本文将介绍如何通过YOLO框架和遥感图像进行目标检测的代码。 文章目录 一、数据集下载与格式转换1.1 NWPU VHR-10(73.1 MB)1.2 DIOR(7.06 GB)1.3 配置data.yaml 二、训练三、训练结果 一、数据集…...
DAMA学习笔记(十一)-元数据管理
1.引言 元数据最常见的定义是“关于数据的数据”。它描述了数据本身(如数据库、数据元素、数据模型),数据表示的概念(如业务流程、应用系统、软件代码、技术基础设施),数据与概念之间的联系(关系…...
密码学基本理论
密码学是研究信息安全保护的科学,实现信息的保密性、完整性、可用性以及抗抵赖性 根据密码分析者在破译时已经具备的前提条件,密码分析攻击类型分类: 唯密文攻击:已知密文;未知明文+秘钥已知明文攻击:已知部分明文和密文对;未知秘钥+算法选择明文攻击:已知明文+算法--…...
【深度学习】【语音TTS】vits 论文,Variational Inference Text-to-Speech(1)
代码:https://github.com/jaywalnut310/vits 论文:https://arxiv.org/abs/2106.06103 文章目录 摘要1. 引言2. 方法2.1. 变分推理2.1.1. 概述2.1.2. 重构损失2.1.3. KL散度2.2. 对齐估计2.2.1. 单调对齐搜索2.2.2. 从文本预测时长2.3. 对抗训练2.4. 最终损失2.5. 模型架构2.5…...
javascript中 window 相关知识点以及代码演示
一.了解window 在JavaScript中,window对象是浏览器的全局对象,它不仅代表了浏览器窗口,同时也充当了ECMAScript中的Global对象的角色。因此,深入了解和掌握window对象的属性和方法对于JavaScript开发者来说至关重要。 以下内容将…...
企业社会责任(CSR)国际标准有哪些?
以下是一些常见的企业社会责任(CSR)国际标准和相关体系等: 原则性、指南性标准 ISO 26000《社会责任指南》 :将社会责任归纳为7个核心方面,即公司治理、人权、劳工、环境、公平运营实践、消费者问题以及对社会发展作贡…...
The C programming language (second edition,KR) exercise(CHAPTER 7)
E x c e r c i s e 7 − 1 Excercise\quad 7-1 Excercise7−1: #include <stdio.h> #include <string.h> #include <ctype.h>enum type {LOWER, UPPER };int main(int argc, char *argv[]) {int c, mode = -1;if (stricmp(*argv, "lower.exe") =…...
面向服务架构(SOA)介绍
在汽车电子电气架构还处于分布式时代时,汽车软件的开发方式主要是采用嵌入式软件进行开发,而随着汽车智能化程度的加深,更加复杂且多样的功能需求让汽车软件在复杂度上再上一层。在整车的自动驾驶方面,由于未来高阶自动驾驶能力的…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...
DeepSeek越强,Kimi越慌?
被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...
