Oracle数据库之基本查询详解(三)

目录

sql简介

DML(数据库操作语言)

DDL(数据库定义语言)

DCL(数据库控制语言)

Select语句的语法格式

通过列名查询

1. 通过列名查询所在的表

2. 通过列名查询列的数据

4. 使用PL/SQL块查询

 别名的用法

1.列别名:

2.表别名:

3.别名在WHERE子句中的使用:

4. 别名的命名规则:

消除重复数据

查询中的四则运算

加法运算

减法运算

乘法运算

除法运算

注意事项

空值问题

空值的含义:

空值的处理方式:

注意事项:

查询空值 

过滤空值

1. NVL函数

2. NVL2函数

3. COALESCE函数

4. 过滤空值

5. 注意事项

连接符 


sql简介

结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统:同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存取方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以实用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言可以嵌套,这使得它具有极大的灵活性和强大的功能。

DML(数据库操作语言)

其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

DDL(数据库定义语言)

其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREATE TABLE 或 DROP TABLE):为表加入索引等。DDL包括许多与数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

DCL(数据库控制语言)

它的语句通过GRANT 或 REVOKE 获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

Select语句的语法格式

Oracle 数据库的 SELECT 语句用于从数据库表或视图中检索数据。以下是其基本语法格式:

SELECT   [DISTINCT | ALL]   { column_name | expression | aggregate_function(column_name) | ... }  [ , ... ]  
FROM   table_name | view_name | (subquery)  [ [ AS ] alias_name ]  
[ WHERE   search_condition ]  
[ GROUP BY   group_by_expression [ , ... ] ]  
[ HAVING   group_condition ]  
[ ORDER BY   { column_name | expression | position }  [ ASC | DESC ] [ , ... ] ]  
[ FETCH FIRST [ row_count | PERCENT PERCENT ] [ ROWS | ROW ONLY ]  | OFFSET offset_value ROWS  | [ OFFSET offset_value ROWS ] FETCH NEXT [ row_count | PERCENT PERCENT ] [ ROWS | ROW ONLY ] ]  
[ FOR UPDATE [ OF column_name [ , ... ] ] [ NOWAIT | WAIT n ] ];

说明:

  • SELECT:指定要从数据库检索的列。
  • DISTINCT:可选。指定返回唯一的行。
  • ALL:默认。返回所有匹配的行,包括重复的行。
  • column_name:要检索的列的名称。
  • expression:可以是一个或多个列的组合、算术表达式等。
  • aggregate_function(column_name):聚合函数,如 SUM()AVG()MAX()MIN()COUNT() 等。
  • FROM:指定要从中检索数据的表或视图的名称。
  • table_name 或 view_name:表或视图的名称。
  • subquery:子查询,它本身是一个 SELECT 语句。
  • alias_name:为表或子查询指定的别名。
  • WHERE:指定要返回的行的搜索条件。
  • GROUP BY:根据一个或多个列对结果集进行分组。
  • HAVING:指定对分组后的结果进行过滤的条件。
  • ORDER BY:指定结果集的排序顺序。
  • ASC:升序排序(默认)。
  • DESC:降序排序。
  • FETCH FIRST:限制返回的行数。可以与 OFFSET 一起使用以进行分页。
  • OFFSET:与 FETCH NEXT 一起使用以跳过指定数量的行,通常用于分页。
  • FOR UPDATE:用于锁定检索的行以供后续更新。可以指定要锁定的列,或使用 NOWAIT 或 WAIT n 来控制锁定行为。

注意:Oracle 的不同版本可能支持不同的 SELECT 语句选项和语法。上述语法是 Oracle 数据库的一个通用版本,但具体细节可能因您使用的 Oracle 版本而异。

通过列名查询

在Oracle数据库中,如果你想要通过列名查询表或者查询列中的数据,你可以使用不同的方法。以下是一些常见的场景和相应的SQL语句:

1. 通过列名查询所在的表

如果你知道列名,但不确定它在哪个表中,你可以查询ALL_TAB_COLUMNSUSER_TAB_COLUMNSDBA_TAB_COLUMNS(如果你有足够的权限)视图。

例如,查询所有包含AGE列的表:

SELECT TABLE_NAME, OWNER  
FROM ALL_TAB_COLUMNS  
WHERE COLUMN_NAME = 'AGE'  
ORDER BY TABLE_NAME;

注意:ALL_TAB_COLUMNS会返回你有权访问的所有表和列的信息。如果你只想查询你拥有的表,可以使用USER_TAB_COLUMNS

2. 通过列名查询列的数据

如果你知道列名和表名,你可以使用SELECT语句来查询列的数据。

例如,从STUDENT_BASE_INFO表中查询AGE列的数据:

SELECT AGE FROM STUDENT_BASE_INFO;

3. 查询表的列名和数据类型

如果你想要查询指定表的所有列名和数据类型,你可以查询USER_TAB_COLSALL_TAB_COLS视图。

例如,查询STUDENT_BASE_INFO表的所有列名和数据类型:

SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_SCALE  
FROM USER_TAB_COLS  
WHERE TABLE_NAME = 'STUDENT_BASE_INFO'  
ORDER BY COLUMN_ID;

注意:COLUMN_ID是一个可选的排序字段,它表示列在表中的顺序。你可以根据需要添加或省略它。

4. 使用PL/SQL块查询

在某些情况下,你可能想要编写一个PL/SQL块来遍历数据库中的所有表,并查找包含特定列名的表。这通常涉及动态SQL的使用,因为你需要根据查询结果构建和执行SQL语句。这种情况相对复杂,通常只在需要自动化或大规模查询时使用。

 别名的用法

在Oracle数据库中,别名(Alias)是一种为表、列、函数等命名的方法,它可以使SQL语句更加简洁明了,提高代码的可读性和可维护性。以下是Oracle中别名的用法:

1.列别名

在SELECT语句中,你可以为列指定一个别名,这样可以在结果集中以更友好的名称显示列。列别名的使用方法如下:

SELECT column_name AS alias_name  
FROM table_name;

或者,你可以简单地使用空格代替AS关键字:

SELECT column_name alias_name  
FROM table_name;

例如,从employees表中查询employee_idlast_name列,并将last_name列重命名为lname

SELECT employee_id, last_name AS lname  
FROM employees;

2.表别名

当查询涉及多个表时,为表指定别名可以使查询更加简洁。表别名的使用方法如下:

SELECT table1.column_name, table2.column_name  
FROM table1 AS alias1, table2 AS alias2  
WHERE alias1.column_name = alias2.column_name;

或者,你可以简单地使用空格代替AS关键字:

SELECT table1.column_name, table2.column_name  
FROM table1 alias1, table2 alias2  
WHERE alias1.column_name = alias2.column_name;

例如,从employeesdepartments表中查询员工姓名和部门名称,并为这两个表指定别名ed

SELECT e.last_name, d.department_name  
FROM employees e, departments d  
WHERE e.department_id = d.department_id;

3.别名在WHERE子句中的使用

你可以在WHERE子句中使用列别名来过滤查询结果。但请注意,在某些数据库系统中,你可能不能在WHERE子句中直接使用列别名,因为这取决于查询的解析顺序。但是,在Oracle中,你可以在HAVING子句或ORDER BY子句中使用列别名。

4. 别名的命名规则

  • 别名的命名规则与变量名相同,可以包含字母、数字、下划线和美元符号,但必须以字母或下划线开头。
  • 别名的长度不能超过30个字符。
  • 别名不区分大小写(但在某些情况下,如创建对象时,Oracle可能会区分大小写)。
  • 如果需要在多个查询中使用相同的别名,必须分别定义。

使用别名可以大大提高SQL语句的可读性和可维护性,特别是在处理复杂查询或涉及多个表的查询时。

消除重复数据

在Oracle数据库中,消除重复数据的方法有多种,以下是一些常见的方法:

1.使用DISTINCT关键字

你可以使用DISTINCT关键字来从查询结果中消除重复的行。但是,这通常用于选择不重复的数据,而不是删除表中的重复记录。

SELECT DISTINCT column1, column2, ...  
FROM table_name;

2.使用GROUP BY和HAVING子句

你可以使用GROUP BY子句对数据进行分组,并使用HAVING子句来过滤出那些有重复数据的组。然后,你可以结合其他操作(如DELETE)来删除这些重复的数据。

DELETE FROM table_name  
WHERE (column1, column2, ...) IN (  SELECT column1, column2, ...  FROM table_name  GROUP BY column1, column2, ...  HAVING COUNT(*) > 1  
);

注意:上面的DELETE语句可能因为Oracle的限制而无法直接执行(特别是在有外键约束的情况下)。你可能需要使用其他方法,如先创建一个临时表,然后删除原表数据,并将临时表中的数据重新插入。
3. 使用ROWID

你可以使用ROWID来唯一标识表中的每一行,并通过比较ROWID来删除重复的数据。

DELETE FROM table_name a  
WHERE ROWID NOT IN (  SELECT MIN(ROWID)  FROM table_name b  WHERE a.column1 = b.column1 AND a.column2 = b.column2 AND ...  
);

在这个例子中,我们假设column1column2, ... 是用于确定重复数据的列。这个DELETE语句会保留每组重复数据中的一行(基于ROWID的最小值),并删除其他行。

4. 使用临时表和TRUNCATE/INSERT

对于有大量重复数据的情况,你可以创建一个临时表来存储不重复的数据,然后清空原表并重新插入数据。

CREATE TABLE temp_table AS SELECT DISTINCT * FROM table_name;  
TRUNCATE TABLE table_name;  
INSERT INTO table_name SELECT * FROM temp_table;  
DROP TABLE temp_table;

请注意,在使用TRUNCATE命令之前,请确保你已经备份了所有重要的数据,因为TRUNCATE会删除表中的所有数据(并且不能回滚)。
5. 使用EXISTS或NOT EXISTS子查询

你还可以使用EXISTSNOT EXISTS子查询来查找并删除重复的数据。这种方法可能比其他方法更复杂一些,但在某些情况下可能更有效。
6. 创建唯一索引

虽然这不是直接删除重复数据的方法,但你可以在表中创建唯一索引来防止将来插入重复的数据。如果表中已经存在重复的数据,那么创建唯一索引将会失败,并显示错误消息。在这种情况下,你需要先删除或合并重复的数据,然后再创建唯一索引。

查询中的四则运算

在Oracle数据库的查询中,四则运算(加、减、乘、除)可以在SELECT语句的表达式中直接使用。这些运算符与大多数编程语言中的运算符类似,并且遵循标准的数学运算优先级(即先乘除后加减,括号内的运算优先)。

以下是Oracle查询中四则运算的示例:

1. 加法运算

SELECT column1 + column2 AS sum_result  
FROM table_name;

在这个例子中,column1column2是表中的两列,通过加法运算符+将它们相加,并将结果命名为sum_result

2. 减法运算

SELECT column1 - column2 AS difference_result  
FROM table_name;

在这个例子中,column1column2是表中的两列,通过减法运算符-将它们相减,并将结果命名为difference_result

3. 乘法运算

SELECT column1 * column2 AS product_result  
FROM table_name;

在这个例子中,column1column2是表中的两列,通过乘法运算符*将它们相乘,并将结果命名为product_result

4. 除法运算

SELECT column1 / column2 AS division_result  
FROM table_name;

在这个例子中,column1column2是表中的两列,通过除法运算符/将它们相除,并将结果命名为division_result。请注意,如果column2的值为0,那么将会导致除以零的错误。

5. 注意事项

  • 当在SELECT语句中进行四则运算时,确保操作数的数据类型是兼容的。例如,你不能将字符串和数字相加,除非字符串可以被隐式地转换为数字。
  • 如果你的查询涉及多个表,并且你想对这些表中的列进行四则运算,你可能需要使用表的别名来区分这些列。
  • 使用括号可以改变运算的优先级。例如,(column1 + column2) * column3将首先计算column1column2的和,然后将结果乘以column3

空值问题

在Oracle数据库中,空值(NULL)是一个特殊的概念,用来表示字段中没有存储任何数据或数据的值未知。空值与零、空格或空字符串不同,它们表示不同的数据类型和含义。

处理Oracle中的空值问题是非常重要的,因为如果不妥善处理,可能会导致程序出现错误或不准确的结果。以下是一些关于Oracle空值问题的常见情况和处理方式:

  1.  空值的含义

    • 在Oracle中,空值表示一个字段没有存储任何数据。
    • 它可以是一个未初始化的字段,也可以是一个被明确设置为NULL的字段。
    • 空值与零、空格或空字符串是不同的,它们分别表示不同的数据类型和含义。
  2. 空值的处理方式

    • 使用COALESCE函数:该函数接受一个参数列表,并返回第一个非空的参数。如果所有参数都为空,则返回空值。例如,可以使用COALESCE函数来查找员工的多个联系电话,并返回第一个非空的电话号码。
    • 使用NULLIF函数:该函数接受两个参数,如果第一个参数等于第二个参数,则返回空值;否则,返回第一个参数的值。这可以用于比较两个字段的值,并在它们相等时返回空值。
    • 在查询中处理空值:在SELECT语句中,可以使用IS NULL或IS NOT NULL条件来检查字段是否为空值。这可以帮助你过滤或包含具有空值的行。
    • 在插入或更新时处理空值:当插入或更新数据时,可以显式地将某个字段设置为NULL,以表示该字段没有值。但是,请注意,如果字段被定义为NOT NULL或具有其他完整性约束,则不能将其设置为NULL。
    • 使用默认值:可以为字段设置默认值,以便在插入新行但未提供该字段的值时使用。这有助于避免空值问题,并确保每个字段都有一个有效的值。
  3. 注意事项

    • 在进行四则运算或比较操作时,如果涉及空值,可能会导致错误或不可预测的结果。因此,在编写查询或应用程序时,请务必考虑空值的可能性并妥善处理它们。
    • 在设计数据库时,应仔细考虑是否需要允许空值,并根据需要为字段设置适当的完整性约束和默认值。这有助于确保数据的准确性和一致性。

查询空值 

在Oracle数据库中,查询空值(NULL)通常使用IS NULL条件。如果你想查询某个字段为空值的行,你可以将该字段与IS NULL条件结合使用。

以下是一个简单的示例,演示如何在Oracle中查询空值:

SELECT * FROM 表名 WHERE 列名 IS NULL;

在这个查询中,你需要将“表名”替换为你要查询的表的名称,将“列名”替换为你要检查空值的列的名称。

例如,如果你有一个名为employees的表,并且你想查询phone_number列为空值的所有员工,你可以使用以下查询:

SELECT * FROM employees WHERE phone_number IS NULL;

这将返回phone_number列为空值的所有employees表的行。

另外,如果你想要查询非空值,你可以使用IS NOT NULL条件:

SELECT * FROM 表名 WHERE 列名 IS NOT NULL;

例如,查询phone_number列非空值的所有员工:

SELECT * FROM employees WHERE phone_number IS NOT NULL;

这将返回phone_number列非空值的所有employees表的行。

过滤空值

在Oracle中,当你想在查询中处理空值(NULL)时,可以使用多种方法,其中之一就是使用滤空函数,如NVLNVL2COALESCE等。这些函数允许你替换或处理查询结果中的NULL值。

1. NVL函数

NVL函数用于将NULL值替换为另一个值。其语法为:

NVL(expression1, replace_with)
  • expression1 是要检查的表达式,如果它为NULL,则执行替换。
  • replace_with 是当expression1为NULL时要替换的值。

示例:

SELECT NVL(phone_number, 'Unknown') AS phone_number_or_unknown  
FROM employees;

在这个例子中,如果phone_number列中的值为NULL,则结果集中的phone_number_or_unknown列将显示为'Unknown'。

2. NVL2函数

NVL2函数根据第一个参数是否为NULL来返回两个值中的一个。其语法为:

NVL2(expression1, value_if_not_null, value_if_null)
  • expression1 是要检查的表达式。
  • value_if_not_null 是当expression1不为NULL时要返回的值。
  • value_if_null 是当expression1为NULL时要返回的值。

示例:

SELECT NVL2(phone_number, 'Has Phone', 'No Phone') AS phone_status  
FROM employees;

在这个例子中,如果phone_number列中的值不为NULL,则phone_status列将显示为'Has Phone';如果为NULL,则显示为'No Phone'。

3. COALESCE函数

COALESCE函数返回参数列表中的第一个非NULL值。其语法为:

COALESCE(expression1, expression2, ..., expressionN)
  • expression1 到 expressionN 是要检查的表达式列表。函数将返回列表中的第一个非NULL值。如果所有值都为NULL,则返回NULL。

示例:

SELECT COALESCE(phone_number, email, 'No Contact Info') AS contact_info  
FROM employees;

在这个例子中,如果phone_number列中的值不为NULL,则contact_info列将显示电话号码;如果电话号码为NULL但email列中的值不为NULL,则显示电子邮件地址;如果两者都为NULL,则显示'No Contact Info'。

4. 过滤空值

虽然这些函数本身不直接用于“过滤”空值(即从结果集中排除包含NULL的行),但它们允许你在结果集中处理或替换NULL值。如果你想要过滤掉包含NULL值的行,你应该在WHERE子句中使用IS NULLIS NOT NULL条件。例如:

SELECT *  
FROM employees  
WHERE phone_number IS NOT NULL; -- 过滤掉phone_number为NULL的行

5. 注意事项

  • 当你使用不等于操作符(<>!=)来过滤数据时,这些操作符会忽略NULL值。也就是说,它们不会匹配NULL值。这就是为什么在过滤空值时,我们通常使用IS NULLIS NOT NULL条件。
  • 在比较或处理NULL值时,要小心,因为NULL与任何其他值的比较都会返回NULL(表示未知),这可能会导致查询结果不符合你的期望。因此,最好直接使用IS NULLIS NOT NULL条件来处理NULL值。

连接符 

在Oracle数据库中,连接符(Concatenation Operator)用于将两个或多个字符串值连接在一起。在SQL中,Oracle使用||作为连接符。

当你想要将两个或多个列的值、字符串常量或表达式连接成一个字符串时,你可以使用||连接符。以下是一个简单的示例,展示了如何在Oracle中使用连接符:

SELECT first_name || ' ' || last_name AS full_name  
FROM employees;

在这个示例中,我们选择了employees表中的first_namelast_name列,并使用||连接符将它们与一个空格字符串连接在一起。结果集中的full_name列将包含连接后的完整姓名。

请注意,连接符||在Oracle SQL中是区分大小写的,因此必须使用小写字母。此外,当连接字符串时,如果其中一个操作数是NULL,则整个连接结果也将是NULL。为了避免这种情况,你可以使用NVL函数将NULL值替换为一个空字符串或其他默认值。

除了连接符之外,Oracle还提供了其他字符串函数和操作符,用于处理字符串数据。这些函数和操作符可以帮助你执行各种字符串操作,如截取、替换、转换大小写等。你可以根据需要在查询中使用这些函数和操作符来处理和格式化字符串数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/10906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【顺序程序设计-谭浩强适配】(适合专升本、考研)

无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 无偿分享学习资料&#xff0c;需要的小伙伴评论区或私信dd。。。 完整资料如下&#xff1a;纯干货、纯干货、纯干货&#xff01;&#xff01;…

springboot 设置response和request的默认格式 驼峰或者SNAKE_CASE

springboot 设置response和request的默认格式 驼峰或者SNAKE_CASE。 我们使用默认配置的情况下&#xff0c;response和request是由jackson jason序列化和解析的&#xff0c;因此&#xff0c;我们只需要配置好jackson json的默认格式就可以。 要设置 jackson json默认的更多格式…

WEB后端复习——监听器、过滤器

Listener监听器 是Servlet规范中定义的一种特殊类&#xff0c;它用于监听web应用程序中的ServletContext, HttpSession和ServletRequest等域对象的创建与销毁事件&#xff0c;以及监听这些域对象中的属性发生修改的事件。 注解WebListener 1.ServletContextListener 监听Serv…

U盘文件遇损?拯救“文件或目录损坏且无法读取”的秘籍!

在数字化时代&#xff0c;U盘已成为我们日常生活与工作中不可或缺的数据存储和传输工具。然而&#xff0c;有时我们可能会遇到一个非常令人沮丧的问题——U盘中的文件或目录突然损坏且无法读取。这种突发状况往往让人措手不及&#xff0c;甚至可能引发数据丢失的严重后果。那么…

打印图案(金字塔)头歌作业

题目: 任务描述 本关任务&#xff1a;编写一个程序&#xff0c;输出堆叠式的金字塔图案。 输入n个字符&#xff0c;按以下原则输出&#xff1a;【参考样例】 1)第1个字符为一层金字塔图案&#xff0c;第2个字符为两层金字塔图案&#xff0c;第3个字符为三层金字塔图案&#x…

相同的树——java

给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,2,3] 输出&#xff1a;true示例 2&…

[华为OD] B卷 树状结构查询 200

题目&#xff1a; 通常使用多行的节点、父节点表示一棵树&#xff0c;比如 西安 陕西 陕西 中国 江西 中国 中国 亚洲 泰国 亚洲 输入一个节点之后&#xff0c;请打印出来树中他的所有下层节点 输入描述 第一行输入行数&#xff0c;下面是多行数据&#xff0c;每行以空…

C++青少年简明教程:基础知识

C青少年简明教程&#xff1a;基础知识 电脑程序设计&#xff08;Computer programming&#xff09;&#xff0c;或称程序设计&#xff08;programming&#xff09;&#xff0c;是给出解决特定问题程序的过程&#xff0c;程序设计往往以某种程序设计语言为工具&#xff0c;给出这…

1.4. 离散时间鞅-鞅的Lp收敛,鞅与停时 (1)

鞅的Lp收敛,鞅与停时 鞅的 L p L^p Lp收敛(

通过pywinauto和win32gui和pyautogui自动化实现批量导入

清空文件&#xff0c;两行以下的文件 import os# 要操作的文件路径 file_path example.txt# 删除文件 if os.path.exists(file_path):os.remove(file_path)# 重新创建文件 with open(file_path, w) as file:file.write() # 如果需要写入内容&#xff0c;可以在这里写入拆分文…

关于一致性,你该知道的事儿(上)

关于一致性&#xff0c;你该知道的事儿&#xff08;上&#xff09; 前言一、缓存一致性二、内存模型一致性三、事务一致性四、分布式事务一致性4.1 分布式系统的一些挑战4.2 关于副本的一些概念4.3 分布式事务之共识问题4. 3.1 PC(two-phase commit, 2PC)4.3.2 Raft 三、后记参…

公有云Linux模拟TCP三次挥手与四次握手(Wireshark抓包验证版)

目录 写在前面环境准备实验步骤1. 安装nc工具2. 使用nc打开一个连接2.1 公有云-安全组放行对应端口&#xff08;可选&#xff09; 3. 打开Wireshark抓包工具4. 新开终端&#xff0c;进行连接5. 查看抓包文件&#xff0c;验证TCP三次握手与四次挥手TCP三次握手数据传输TCP四次挥…

交叉编译编译ffmpeg:ERROR: x265 not found using pkg-config(未解决)

具体错误 ERROR: x265 not found using pkg-configIf you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the ffmpeg-userffmpeg.org mailing list or IRC #ffmpeg on irc.lib…

gin:01-框架安装

概述 看下 Gin 框架的官方介绍&#xff1a; Gin 是一个用 Go (Golang) 编写的 web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter&#xff0c;速度提高了近 40 倍。 如果你是性能和高效的追求者, 你会爱上 Gin。 是的&#xff0c;就是用 Gin 来写…

Netty源码分析二NioEventLoop 剖析

剖析方向 NioEventLoop是一个重量级的类&#xff0c;其中涉及到的方法都有很复杂的继承关系&#xff0c;调用链&#xff0c;要想把源码全部过一遍工作量实在是太大了&#xff0c;于是小编就基于下面的这些常见的问题来对NioEventLoop的源码来进行剖析 1.Seletor何时创建 1.1Se…

python删除一个文件夹所有文件

在Python中&#xff0c;可以使用os模块来删除一个文件夹中的所有文件&#xff0c;但保留文件夹本身。以下是一个简单的例子&#xff1a; import osdef delete_files_in_folder(folder_path):for filename in os.listdir(folder_path):file_path os.path.join(folder_path, fi…

2024OD机试卷-密码解密 (java\python\c++)

题目:密码解密 题目描述 给定一段“密文”字符串 s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。 映射的规则(‘a’ ~ ‘i’)分别用(‘1’ ~ ‘9’)表示;(‘j’ ~ ‘z’)分别用(“10*” ~ “26*”)表示。 约束:映射始终唯一。 输入描述 “…

【408真题】2009-08

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

TMS320F280049 CLB模块--LUT4 OUTLUT(4)

LUT4 示意图如下&#xff1a; OUTLUT 示意图如下&#xff1a; 寄存器 参考文档&#xff1a; TMS320F28004x Real-Time Microcontrollers Technical Reference Manual (Rev. G)

Java spring boot注解@RequestParam

RequestParam 是 Spring MVC 中的一个注解&#xff0c;它用于从 HTTP 请求的参数中提取数据&#xff0c;并绑定到控制器方法的参数上。这个注解通常用在方法的参数上&#xff0c;以表示该参数的值应该从 HTTP 请求的参数中获取。 以下是一些关于 RequestParam 的关键点&#x…